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