はじめに
Okta Spring Boot Starterを追加する
Okta Spring Boot Starter の依存関係をプロジェクトに追加します。これにより、Auth0/Okta 向けの自動構成を備えた Spring Security OAuth2 ログインサポートが組み込まれます。
- Maven (pom.xml)
- Gradle (build.gradle)
Auth0 を設定する
Auth0テナントでRegular Web Applicationを作成し、プロジェクトに設定を追加してください。CLIコマンドを実行して自動的に行う方法と、Dashboardから手動で行う方法のいずれかを選択できます。
- CLI
- ダッシュボード
Auth0 アプリケーションを作成して
application.yml ファイルを更新するには、プロジェクトのルートディレクトリで次のシェルコマンドを実行します。- Mac/Linux
- Windows (PowerShell)
認証を設定
OAuth2 ログインを有効にし、Auth0 からのログアウトを処理するセキュリティ設定を作成します。認証されていないユーザーは自動的に Auth0 のログインページにリダイレクトされます。
これで、Auth0 ログインを備えた完全に動作する Spring Boot Web アプリケーションが localhost で実行されているはずです。ホームページは公開されており、
/profile にアクセスすると、未認証のユーザーは Auth0 のログインページにリダイレクトされます。高度な使い方
ユーザープロファイルクレームへのアクセス
ユーザープロファイルクレームへのアクセス
@AuthenticationPrincipal OidcUser パラメーターを使用すると、IDトークンのすべてのクレームにアクセスできます。すべてのクレームを取得するには getClaims() を使用し、特定のクレームを取得するには個別の getter メソッドを使用します。ロールベースアクセス制御
ロールベースアクセス制御
カスタム権限のマッピング
カスタム権限のマッピング
よくある問題
ログインへのリダイレクトに失敗する - コールバック URL が無効
ログインへのリダイレクトに失敗する - コールバック URL が無効
ログインを選択すると、Auth0 にコールバック URL の不一致に関するエラーが表示されます。Auth0 アプリケーションの Allowed Callback URLs は、Spring Security で使用されるコールバック URL と完全に一致している必要があります。デフォルトは
http://localhost:3000/login/oauth2/code/okta です。- Auth0 Dashboard → Applications → Your App → Settings に移動します。
- Allowed Callback URLs に
http://localhost:3000/login/oauth2/code/oktaを追加します。 - Save Changes を選択します。
起動時に issuer が無効
起動時に issuer が無効
アプリケーションの起動に失敗するか、issuer の不一致によりログインに失敗します。
okta.oauth2.issuer には、https:// と末尾の / を含む完全な Auth0 テナント URL を指定する必要があります。起動時に OIDC ディスカバリーに失敗する
起動時に OIDC ディスカバリーに失敗する
/.well-known/openid-configuration の取得時に接続エラーが発生し、アプリケーションの起動に失敗します。Okta Spring Boot Starter は、起動時に issuer URL から OpenID Connect ディスカバリードキュメントを取得します。issuer URL が正しく、ネットワークから到達可能であることを確認してください。社内ファイアウォールの内側にある場合は、プロキシを設定してください。設定値が見つからない
設定値が見つからない
アプリケーションは起動しますが、設定プロパティが読み込まれていないため、ログインに失敗します。
application.yml で、okta.oauth2 名前空間の下に正しい YAML のインデントが使われていることを確認してください。ログアウトしても Auth0 セッションがクリアされない
ログアウトしても Auth0 セッションがクリアされない
ログアウトを選択した後、Auth0 のログインページが表示されず、ユーザーはすぐに再ログインした状態になります。
SecurityConfig に、Auth0 の /v2/logout エンドポイントへリダイレクトするカスタム LogoutHandler が含まれていることを確認してください。また、Auth0 アプリケーション設定の Allowed Logout URLs に http://localhost:3000/ が含まれていることも確認してください。参考資料
SDKドキュメント
SDKの完全なドキュメント、ソースコード、リリースノート
Auth0ドキュメント
Spring Bootアプリケーション向けのAuth0公式ドキュメント
Spring Securityリファレンス
Spring Security OAuth2 Loginのドキュメント
設定リファレンス
使用可能なすべてのokta.oauth2.*設定プロパティ
Auth0 Dashboard
Auth0のAPIとアプリケーションを管理します
コミュニティフォーラム
Auth0コミュニティからサポートを受ける
サンプルアプリケーション
MVC ログインサンプル
Auth0 OAuth2 統合によるログイン、ログアウト、プロフィールページが含まれています
http://localhost:3000 を開き、ログイン リンクを選択して Auth0 のログインフローをテストします。