認証&アクセス制御2 (P)
Python 版プログラム
例のごとく、git pull してください。あと、ライブラリの追加 (JWT) があるので、pip の追加を忘れずに。
注: pip でパッケージ名を指定する場合は jwt ではなく pyjwt になります。
実行前に以下の箇所を変更してください。
- プログラム (
request_auth_sample.py)webAPIKey: 取得した firebase project の web API key を入力してください。baseURL: 各自の Realtime DB の base URL を入力してください。
- 一般ファイル
account/request.json: 実験で利用するアカウントのメールアドレスとパスワードを記入してください。
プログラムの簡単な解説
-
TokenManager:get_token(),get_token_user()などを提供。皆さんが中身を理解する必要はなく、使うだけ。account/request.jsonの情報をつかって認証をおこなう。一度取得したトークンはaccount/token.jwtに配置する。get_token(): 利用可能なトークンを返す。すでにトークンを持っている場合は、再利用するが、expire されている場合は再取得する。get_token_user(): トークンを利用したユーザの firebase における user id を返す。セキュリティルールのauth.uidに相当する。
-
UserDBService: 前回同様、RealtimeDBにアクセスするメソッド。get(), put()のパラメータにtokenが加わる
-
request_sample(): 簡単な利用例です- まず、
TokenManager()でmanagerを生成して、get_token(), get_token_user()でトークンおよびuidを取得する。 - あとは、前回同様
UserDBServiceにアクセスするだけ。
- まず、
練習問題 D
準備段階
- まずは認証機構の設定とアカウント登録をおこなう
- セキュリティルールの登録をおこなう
- 直接 REST API をたたいて (postman などをつかって) JWT token の取得、アクセス制御の確認をしてみましょう。
問題:プログラムを介して、アクセス制御の確認をしてみましょう。
- まずは、
request.jsonにログイン情報を入力、また、webAPIKeyおよびbase_urlを更新して、request_auth_sample.pyを実行してみましょう。 - 加えて、
読み書き書き込みができない場所へのアクセスが、きちんと拒否されることを確認し、その時の返り値も確認しましょう。- Firebase 上に利用者が書き込みできないはずのデータを追加して、書き込みを確認してくれれば十分です。
- 進捗報告時は、改変プログラムと、実行結果を送るように。
request.jsonは送らないでください。