Skip to main content
前提条件:Java バージョンの互換性: Spring Boot 3.x+ および Okta Spring Boot Starter 3.x では、Java 17 以上が必要です。

はじめに

このクイックスタートでは、Spring Boot の Web アプリケーションに Auth0 のログインを追加する方法を紹介します。Okta Spring Boot Starter を使って、ログイン、ログアウト、保護されたプロファイルページを備えた安全な Web アプリを構築します。これにより、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コマンドを実行して Auth0 アプリを自動的に設定する方法と、Auth0 Dashboardから手動で行う方法のいずれかを選択できます:
Auth0 アプリケーションを作成して src/main/resources/application.yml を更新するには、プロジェクトのルートディレクトリで次のシェルコマンドを実行します。
このコマンドは次を実行します:
  1. 認証済みかどうかを確認します (必要に応じてログインを促します)
  2. http://localhost:3000 用に設定された Auth0 Regular Web Application を作成します
  3. okta.oauth2.issuerokta.oauth2.client-idokta.oauth2.client-secret を含む src/main/resources/application.yml を生成します
Gradle を使用する場合は、--build-tool maven--build-tool gradle に置き換えてください。
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 を作成します。

認可を設定する

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

よくある問題

ログインを選択すると、コールバック URL の不一致に関するエラーが Auth0 に表示されます。Auth0 アプリケーションの Allowed Callback URLs は、Spring Security が使用するコールバック URL と完全に一致している必要があります。デフォルトは http://localhost:3000/login/oauth2/code/okta です。
  1. Auth0 Dashboard で、アプリケーション → 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 が正しく、ネットワークから到達可能であることを確認してください。社内の firewall 配下にある場合は、プロキシを設定してください。
アプリケーションは起動しますが、設定プロパティが読み込まれていないためログインに失敗します。application.yml で、okta.oauth2 名前空間の下に正しい YAML のインデントが使われていることを確認してください。
ログアウトを選択すると、Auth0 のログインページが表示されないまま、ユーザーがすぐに再度ログインされます。SecurityConfig に、Auth0 の /v2/logout エンドポイントにリダイレクトするカスタム LogoutHandler が含まれていることを確認してください。あわせて、Auth0 の Application SettingsAllowed 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 Login サンプル

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