認証&アクセス制御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 の取得、アクセス制御の確認をしてみましょう。
-
プログラムを介して、アクセス制御の確認をしてみましょう。
- いくつかデータを準備して、読み書きできる場所へのアクセスが可能であることを確認する。
- 読み書き出来ない場所へのアクセスが拒否されることを確認する