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.issuer、okta.oauth2.client-id、okta.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 Dashboard → Actions → Flows → Login に移動します。
  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 URLs に http://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 Settings の 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 コミュニティからサポートを受ける

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

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

MVC Login サンプル

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