認証&アクセス制御2 (J)
Java版プログラム
例のごとく、git pull してください。あと、ライブラリの追加 (JWT) があったので、Project を右クリックして、maven→project reload しておきましょう。
konanU.net.fbRealtimeDB.auth 以下に配置しています。前より、一段 directory が深くなっているので、気を付けてください。
実行前に以下の箇所を変更してください。
- プログラム
- TokenManager
webAPIKey: 取得した firebase project の web API key を入力してください。
- SampleCaller
baseURL: 各自の Realtime DB の base URL を入力してください。
- TokenManager
- 一般ファイル
/account/request.json: 実験で利用するアカウントのメールアドレスとパスワードを記入してください。
プログラムの簡単な解説
-
TokenManager:getToken(),getTokenUser()などを提供。皆さんが中身を理解する必要はなく、使うだけ。/account/request.jsonの情報をつかって認証をおこなう。一度取得したトークンは/account/token.jwtに配置する。getToken(): 利用可能なトークンを返す。すでにトークンを持っている場合は、再利用するが、expire されている場合は再取得する。getTokenUser(): トークンを利用したユーザの firebase における user id を返す。セキュリティルールのauth.uidに相当する。
-
UserDBService: 前回同様、RealtimeDBにアクセスするメソッド。get(), put()のパラメータにtokenが加わる
-
SampleCaller: 簡単なサンプルプログラムです。- まず、
TokenManager.getManager()でTokenManagerを取得し、getToken(), getTokenUser()でトークンおよびuidを取得する。 - あとは、前回同様
UserDBServiceにアクセスするだけ。
- まず、
練習問題
-
直接 REST API をたたいて (postman などをつかって)、token の取得、アクセス制御の確認をしてみましょう。
-
プログラムを介して、アクセス制御の確認をしてみましょう。
- いくつかデータを準備して、読み書きできる場所へのアクセスが可能であることを確認する。
- 読み書き出来ない場所へのアクセスが拒否されることを確認する