はじめに
クジラ飛行机、 杉山 陽一、遠藤 俊輔 著「PythonでつくるWebアプリのつくり方」を読み,Pythonを使ったWebアプリ開発の基礎を学ぶことにした。
本記事は,「chapter7 アプリのデプロイとチェックリスト」における,Google Accountによる認証に関する読書メモである。
04 バージョン管理システムを導入しよう
要点
前回記事(「PythonでつくるWebアプリのつくり方」を読む ~Chap.7 アプリのデプロイとチェックリスト ②セキュリティ・認証 ~ - jiku log)では,Flaskを用いた認証を試みた。今回は,Google Accountを用いた認証を試みる。
Google Developers Console
Google Account認証を用いるために,Google Cloud Platform にアクセスする。
本節の気付き : Google Developers Console
Google Developers Consoleの画面が本書と結構違っていたので,動作を確認しながら進めていった。
Google Cloud Platform にアクセスにアクセスした後,Google アカウントにログインした。

「プロジェクトを選択」→「新しいプロジェクトを作成」を選択する。そうすると,適当なプロジェクト名が作成されていた。

画面左側に「OAuth同意画面」が表示されたので,クリックした。

「OAuth同意画面」のクリック後の画面は以下の通りである。ここで,「開始」ボタンを押した。

以下の画面が表示された。ユーザータイプは選択でき無さそうだったが,アプリケーション名などが選択できたので,記載し,「次へ」を押した。

ここで,ユーザータイプの選択ができるようになったので,「外部」を選択した。その後,「次へ」ボタンを押しながら,連絡先メールなどの必要情報を記載していった。
その結果,「OAuth」の構成が作成された。

もはや本書とは全く異なる画面であるが,やりたいことはOAuthクライアントの作成なので,「OAuthクライアントを作成」をクリックした。
そうすると,「OAuthクライアントIDの作成」が表示され,「ウェブアプリケーション」が選択できるようになっていたので,これを選択した。

その後,「承認済みのリダイレクトURI」などが表示されたので,本書の通りに「http://127.0.0.1:5000/auth/callback」を入力し,「作成」をクリックした。

そうすると,「クライアントID」のみが表示されたので,コピーしておいた。

クライアントを作成すると,クライアント一覧画面に遷移した。その後,クライアント名をクリックした。

クライアント名をクリックすると,画面右下にクライアントシークレットも表示されていたので,こちらもコピーした。なお,ステータスは自動的に「有効」になっていた。

本節の気付き : pythonプログラムの修正
本節では,「ch7\mfa_google\app.py」の動作確認を行なった。ただし,先ほど入手したクライアントIDとクライアントシークレットを利用できるようにするために,以下の修正を施した。
- 「.env」ファイルの作成
「.env」ファイルに,クライアントIDとクライアントシークレットを記載した。
- python-dotenv のインストール
「.env」ファイルを利用できるようにするために,作成した仮想環境においてpython-dotenvをインストールした。
- プログラムの修正
「ch7\mfa_google\app.py」の冒頭を,以下のように書き直した。
from flask import Flask, redirect, url_for, session from authlib.integrations.flask_client import OAuth import os from dotenv import load_dotenv app = Flask(__name__) load_dotenv() app.secret_key = 'secretkey'
上記のように修正し,「ch7\mfa_google\app.py」を実行したところ,Google アカウントのログイン画面が表示された。その後,Google アカウントのIDを入れると,2段階認証を経て,Googleアカウントにログインした旨が表示された。

まとめと感想
今回は,「chapter7 アプリのデプロイとチェックリスト」における,Google Accountによる認証についてまとめた。
Google側の仕様変更によって,本書が執筆された時点からかなり画面が変わっていた。ただ,本来やりたかったクライアントIDとクライアントシークレットの入手を意識して設定を進めていけば,画面仕様が変わっても必要な情報が入手できると考えられる。そのため,本書を読む際には,現在何を目的に作業をしているかということを十分に意識することが重要だと感じた。
認証については,Flaskによる認証はかなり手間取ったので,Google Accountのような既存のサービスを出来る限り利用したほうがよいと感じた。
本記事を最後まで読んでくださり,どうもありがとうございました。