メインコンテンツへスキップ
前提条件:
  • JDK 17 以上 (ダウンロード)
  • Maven 3.6 以上、または Gradle 7 以上 (Maven | Gradle)
  • IDE (IntelliJ IDEA、Eclipse、または VS Code を推奨)
Java バージョンの互換性: Spring Boot 3.x 以降および Okta Spring Boot Starter 3.x では、Java 17 以降が必要です。

はじめに

このクイックスタートでは、Spring Boot の Web アプリケーションに Auth0 のログインを追加する方法を説明します。Okta Spring Boot Starter を使用して、ログイン、ログアウト、保護されたプロフィールページを備えた安全な Web アプリケーションを構築します。この Starter は、Spring Security の OAuth2 ログインサポートを自動的に設定します。
1

新規プロジェクトを作成する

必要な依存関係を含む Spring Boot プロジェクトを作成します。
2

Okta Spring Boot Starterを追加する

Okta Spring Boot Starter の依存関係をプロジェクトに追加します。これにより、Auth0/Okta 向けの自動構成を備えた Spring Security OAuth2 ログインサポートが組み込まれます。
3

Auth0 を設定する

Auth0テナントでRegular Web Applicationを作成し、プロジェクトに設定を追加してください。CLIコマンドを実行して自動的に行う方法と、Dashboardから手動で行う方法のいずれかを選択できます。
Auth0 アプリケーションを作成して application.yml ファイルを更新するには、プロジェクトのルートディレクトリで次のシェルコマンドを実行します。
4

認証を設定

OAuth2 ログインを有効にし、Auth0 からのログアウトを処理するセキュリティ設定を作成します。認証されていないユーザーは自動的に Auth0 のログインページにリダイレクトされます。
5

コントローラーとビューを作成する

ホームページとプロフィールページ用のコントローラーと Thymeleaf テンプレートを作成します。
6

アプリケーションを実行する

Maven または Gradle のラッパーを使用して、アプリケーションを起動します。
アプリケーションは http://localhost:3000 で実行中です。Auth0 のログインフローを開始するには、http://localhost:3000/profile にアクセスします。
これで、Auth0 ログインを備えた完全に動作する Spring Boot Web アプリケーションが localhost で実行されているはずです。ホームページは公開されており、/profile にアクセスすると、未認証のユーザーは Auth0 のログインページにリダイレクトされます。

高度な使い方

@AuthenticationPrincipal OidcUser パラメーターを使用すると、IDトークンのすべてのクレームにアクセスできます。すべてのクレームを取得するには getClaims() を使用し、特定のクレームを取得するには個別の getter メソッドを使用します。
Auth0 のロールに基づいてページへのアクセスを制限できます。まず、Auth0のActionを使用して IDトークンにロールを追加し、その後セキュリティ設定で hasAuthority() を使用します。

トークンにロールを追加する

  1. Auth0 DashboardActionsFlowsLogin に移動します。
  2. IDトークンにカスタムクレームとしてロールを追加するカスタム Action を作成します。

認可を設定する

エンドポイントで特定のロールを必須にするよう、SecurityConfig を更新します。
Okta Starter は、AuthoritiesProvider インターフェイスを介したカスタム権限マッピングをサポートしています。ユーザー属性や外部データソースに基づいてカスタム GrantedAuthority オブジェクトを追加するには、Bean を登録します。

よくある問題

ログインを選択すると、Auth0 にコールバック URL の不一致に関するエラーが表示されます。Auth0 アプリケーションの Allowed Callback URLs は、Spring Security で使用されるコールバック URL と完全に一致している必要があります。デフォルトは http://localhost:3000/login/oauth2/code/okta です。
  1. Auth0 DashboardApplications → Your App → Settings に移動します。
  2. Allowed Callback URLshttp://localhost:3000/login/oauth2/code/okta を追加します。
  3. Save Changes を選択します。
アプリケーションの起動に失敗するか、issuer の不一致によりログインに失敗します。okta.oauth2.issuer には、https:// と末尾の / を含む完全な Auth0 テナント URL を指定する必要があります。
/.well-known/openid-configuration の取得時に接続エラーが発生し、アプリケーションの起動に失敗します。Okta Spring Boot Starter は、起動時に issuer URL から OpenID Connect ディスカバリードキュメントを取得します。issuer URL が正しく、ネットワークから到達可能であることを確認してください。社内ファイアウォールの内側にある場合は、プロキシを設定してください。
アプリケーションは起動しますが、設定プロパティが読み込まれていないため、ログインに失敗します。application.yml で、okta.oauth2 名前空間の下に正しい YAML のインデントが使われていることを確認してください。
ログアウトを選択した後、Auth0 のログインページが表示されず、ユーザーはすぐに再ログインした状態になります。SecurityConfig に、Auth0 の /v2/logout エンドポイントへリダイレクトするカスタム LogoutHandler が含まれていることを確認してください。また、Auth0 アプリケーション設定の Allowed Logout URLshttp://localhost:3000/ が含まれていることも確認してください。

参考資料

SDKドキュメント

SDKの完全なドキュメント、ソースコード、リリースノート

Auth0ドキュメント

Spring Bootアプリケーション向けのAuth0公式ドキュメント

Spring Securityリファレンス

Spring Security OAuth2 Loginのドキュメント

設定リファレンス

使用可能なすべてのokta.oauth2.*設定プロパティ

Auth0 Dashboard

Auth0のAPIとアプリケーションを管理します

コミュニティフォーラム

Auth0コミュニティからサポートを受ける

サンプルアプリケーション

Auth0 を使用したログイン、プロフィール表示、ログアウトを実装した完全なサンプルアプリケーションは、Auth0 サンプルリポジトリで公開されています。

MVC ログインサンプル

Auth0 OAuth2 統合によるログイン、ログアウト、プロフィールページが含まれています
クローンして実行します。
ブラウザーで http://localhost:3000 を開き、ログイン リンクを選択して Auth0 のログインフローをテストします。