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