博多南ウェブサービスのblog

博多南ウェブサービスのサービス紹介

【Play Framework 2.8.x と play-pac4j サンプル】Authorization を使いたい

Play Framework を始めたばかりの方向けに、サンプルを進めるうえで困ったところを共有する目的で書いています。

Play Framework 2.8.x 、および play-pac4j v5.1 を使って、ユーザーへの認可(サインイン時付与、アクセス時付与、チェック)機能を実装した時のメモです。

以下、目次

できたこと

  • サインイン時、ユーザー(の permissions )に権限(認可用の文字列)付与
  • あるリンクにアクセス時、ユーザーに権限付与

今後、やりたいこと

  • 付与する権限を、DB から読み込んで、サインイン時に付与
  • 権限に有効期限を設け、期限が切れている場合、再認証フローに
  • ユーザーが持つ権限を、他のユーザーに付与

参考にしたところ

Githubこちら

以上でした。

【Play Framework 2.8.x と play-pac4j サンプル】Sign In の後、元のページにリダイレクトしたい

Play Framework を始めたばかりの方向けに、サンプルを進めるうえで困ったところを共有する目的で書いています。

Play Framework 2.8.x 、および play-pac4j v5.1 を使って、OIDC による認証の後、元のページにリダイレクトさせるために実装したときのメモです。

以下、目次

前提

  • 自前でパスワード等の管理はしたくない
  • かといって Firebase Authentication 等は使わない(使えない、自由度がほしい等)

参考にしたところ

実装してみて

  • セッションに RequestURL をセット -> 強制的に認証 -> DefaultCallbackLogic がセッションにセットされた URL にリダイレクトみたいな実装です
  • 強制的に認証は、play-pac4j Scala Demo の forceLogin を参考にしてます

Githubこちら

以上でした。

【Play Framework 2.8.x と play-pac4j サンプル】Cookie によるセッション管理をしたい

Play Framework を始めたばかりの方向けに、サンプルを進めるうえで困ったところを共有する目的で書いています。

Play Framework 2.8.x 、および play-pac4j v5.1 を使って、Cookie によるセッション管理をした時のメモです、

以下、目次

前提

  • 自前でパスワード等の管理はしたくない
  • かといって Firebase Authentication 等は使わない(使えない、自由度がほしい等)
  • stateless なセッション管理をしたい

参考にしたところ

実装してみて

  • play-pac4j の PlayCookieSessionStore を使えば、そのまま使える
  • pac4j の OidcProfile は、id token で帰ってきたユーザー情報をすべて持っており、PlayCookieSessionStore の clearUserProfiles で、セキュリティ上問題になりそうな情報 (id token, access token, refresh token) は消去して cookie に登録しているっぽい
  • cookie で不必要なユーザー情報を送りたくないので、clearUserProfiles を override して不必要な情報を消去した

Githubこちら

以上でした。

【Play Framework 2.8.x と play-pac4j サンプル】LINE Login を使いたい

Play Framework を始めたばかりの方向けに、サンプルを進めるうえで困ったところを共有する目的で書いています。

Play Framework 2.8.x 、および play-pac4j v5.1 を使って、LINE Login を実装したときのメモです。

以下、目次

前提

  • 自前でパスワード等の管理はしたくない
  • かといって Firebase Authentication 等は使わない(使えない、自由度がほしい等)

参考にしたところ

実装してみて

  • id token の検証時、JWS の暗号アルゴリズム (HS256) を直接指定する必要があった
  • pac4j の configuration が、LINE の Discovery URL?からメタデータを読み込むとき、 id_token_signing_alg_values_supported: "ES256"を読み込み、id token のヘッダーにあるHS256を読み込めないのが原因?

Githubこちら

以上でした。

【Play Framework 2.8.x と play-pac4j サンプル】Social sign in with Google だけを使いたい

Play Framework を始めたばかりの方向けに、サンプルを進めるうえで困ったところを共有する目的で書いています。

Play Framework 2.8.x 、および play-pac4j v5.1 を使って、サインイン処理を実装したときのメモです。

以下、目次

前提

  • 自前でパスワード等の管理はしたくない
  • かといって Firebase Authentication 等は使わない(使えない、自由度がほしい等)
  • Sign in with Google の OIDC (OpenID Connect) を使った Socail サインインでやりたい

参考にしたところ

今後、追加したい機能

  • LINE ログイン

Githubこちら

以上でした。

【Play Framework 2.8.x と VSCode】デバッグをしたい

Play Framework を始めたばかりの方向けに、サンプルを進めるうえで困ったところを共有する目的で書いています。

Play Framework 2.8.x を Visual Studio Code, Metals で開発しているときに、デバッグ機能を使ったときのメモです。

以下、目次

環境

手順

1 .vscode/launch.json に以下を追加

   {
    "version": "0.2.0",
    "configurations": [
        {
            "type": "scala",
            "request": "attach",
            "name": "play-debug(attach)",
            "buildTarget": "root",
            "hostName": "localhost",
            "port": 9999
        }
    ]
   }

2 ブレイクポイントを設定
3 sbt -jvm-debug 9999 でsbt サーバー起動
4 ショートカットキー F5、またはメニュー「実行」のデバッグの開始
5 run
6 localhost:9000にアクセス

で、ブレイクポイントで処理が止まりました。

以上でした。

【Play Framework 2.8.x と Silhouette 7.0 サンプル】Social sign in with Google だけを使いたい

Play Framework を始めたばかりの方向けに、サンプルを進めるうえで困ったところを共有する目的で書いています。

Play Framework 2.8.x 、および Silhouette 7.0 を使って、サインイン処理を実装したときのメモです。

以下、目次

前提

  • 自前でパスワード等の管理はしたくない
  • かといって Firebase Authentication 等は使わない(使えない、自由度がほしい等)

見た目

f:id:hakataminamiWS:20210903151000g:plain
Social Sign in with Google

Silhouette Seed Template はそのまま使えた。 が、mail を使った認証等の今回必要ない機能もあったため、Play Framework 2.8.x Scala templateに、必要な機能を merge してみた。

参考にしたところ

今後、追加したい機能

  • LINE ログイン
  • Google の UserInfo エンドポイント変更(現在、People API 使用)

Githubこちら

以上でした。