認証&アクセス制御2 (J)

Java版プログラム

例のごとく、git pull してください。あと、ライブラリの追加 (JWT) があったので、Project を右クリックして、mavenproject reload しておきましょう。

konanU.net.fbRealtimeDB.auth 以下に配置しています。前より、一段 directory が深くなっているので、気を付けてください。

実行前に以下の箇所を変更してください。

  • プログラム
    • TokenManager
      • webAPIKey: 取得した firebase project の web API key を入力してください。
    • SampleCaller
      • baseURL: 各自の Realtime DB の base URL を入力してください。
  • 一般ファイル
    • /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 の取得、アクセス制御の確認をしてみましょう。

  • プログラムを介して、アクセス制御の確認をしてみましょう。

    • いくつかデータを準備して、読み書きできる場所へのアクセスが可能であることを確認する。
    • 読み書き出来ない場所へのアクセスが拒否されることを確認する