認証&アクセス制御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
は送らない
でください。