このチュートリアルではSpring MVCを使用します。Spring WebFluxを使用している場合、認証を追加する手順は似ていますが、実装の詳細は一部異なります。Spring Boot WebFluxサンプルコードで、Auth0とSpring Boot
WebFluxアプリケーションの統合方法を確認してください。
1
Auth0を構成する
Auth0のサービスを利用するには、Auth0 Dashboadでセットアップしたアプリケーションが必要です。Auth0アプリケーションは、開発中のプロジェクトに対してどのように認証が動作して欲しいかを構成する場所です。
アプリケーションを構成する
インタラクティブセレクターを使ってAuth0アプリケーションを新規作成するか、統合したいプロジェクトを表す既存のアプリケーションを選択します。Auth0の全てのアプリケーションには英数字からなる一意のクライアントIDが割り当てられており、アプリケーションのコードがSDKを通じてAuth0 APIを呼び出す際に使用されます。このクイックスタートを使って構成されたすべての設定は、Dashboardのアプリケーションに自動更新を行います。今後、アプリケーションの管理はDashboardで行えます。代わりに完了済みの構成を見てみたい場合は、サンプルアプリケーションをご覧ください。Callback URLを構成する
Callback URLとは、Auth0がユーザーを認証後にリダイレクトするアプリケーション内URLです。設定されていない場合、ユーザーはログイン後にアプリケーションに戻りません。サンプルプロジェクトに沿って進めている場合には、次の値に設定します:
http://localhost:3000/login/oauth2/code/okta
ログアウトURLを構成する
ログアウトURLとは、Auth0がユーザーをログアウト後にリダイレクトするアプリケーション内URLです。設定されていない場合、ユーザーはアプリケーションからログアウトできず、エラーを受け取ります。サンプルプロジェクトに沿って進めている場合には、次の値に設定します:
http://localhost:3000
2
Sprint Bootアプリケーションを構成する
Spring依存関係を追加する
Spring BootアプリケーションをAuth0と統合するには、Okta Spring Boot Starterをアプリケーションの依存関係に含めます。このガイドでは、ビューレイヤー用にThymeleafとSpring Security統合モジュールを使用しています。別の表示技術を使用している場合、Spring
Securityの構成とコンポーネントはそのまま同じです。
3
Spring Securityを構成する
Okta Spring Boot
Starterでは、Auth0でアプリケーションを簡単に構成できます。以下のサンプルでは
application.yml
ファイルを使用していますが、プロパティファイルや他のサポートされる表出化メカニズムを使用することもできます。4
アプリケーションにログインを追加する
Auth0でユーザーログインを有効にするには、SecurityFilterChainを登録するクラスを作成し、
@Configuration
の注釈を追加します。すべてまたは特定のパスで認証を必須にするために、HttpSecurityインスタンスを構成することができます。たとえば、ホームページを除くすべてのパスで認証を必須にするには、以下のようにします:
5
表紙ページを追加する
Okta Spring Boot
Starterは以前に定義したクライアント構成を使って、ユーザーがアプリケーションの
/oauth2/authorization/okta
パスにアクセスしたときのログインを処理します。これを使用して、アプリケーションでログインリンクを作成することができます。このページは、ユーザー認証時にユーザー属性を返します。テンプレートの/logout
リンクを使用して、ログアウト機能を実装します。6
コントローラーを追加する
受信要求を処理するようにコントロールを作成します。このコントローラは
index.html
ページをレンダリングします。ユーザー認証時に、アプリケーションはユーザーのプロファイル情報の属性を取得し、ページをレンダリングします。チェックポイント
ログインリンクをクリックすると、アプリケーションによってAuth0ユニバーサルログインページにリダイレクトされ、ユーザー名とパスワードまたはソーシャルプロバイダーを使ってログインまたはサインアップできるようになったことを確認します。Auth0は、Googleソーシャルプロバイダーを新しいテナントでデフォルトで有効にし、ソーシャルIDプロバイダーでログインテストを実施するための開発者キーを提供します。ただし、これらの開発者キーにはいくつかの制限が設けられており、これによってアプリケーションが異なる動作をする場合があります。この動作の様子と修正方法については、「Auth0開発者キーを使ってソーシャル接続をテストする」ドキュメントを参照してください。
7
アプリケーションにログアウトを追加する
アプリケーションにログインできるようになったら、ログアウトする方法が必要です。デフォルトで、ログアウトが有効になると、Spring
Securityはユーザーをアプリケーションからログアウトし、セッションを消去します。Auth0から正常にログアウトするには、
LogoutHandler
でユーザーをAuth0ログアウトエンドポイント(https://{yourDomain}/v2/logout
)にリダイレクトした直後に、アプリケーションにリダイレクトします。SecurityConfig
クラスでLogoutHandler
を指定すると、Auth0ログアウトエンドポイントにリダイレクトされ、ログアウトハンドラを追加するようにHttpSecurity
を構成します。チェックポイント
ログアウトリンクをクリックすると、「Settings(設定)」にある[Allowed Logout URLs(許可されているログアウトURL)]のいずれかに指定されたアドレスにリダイレクトされ、アプリケーションにログインされなくなります。次のステップ
成功です!ここまで来れば、アプリケーションにログイン、ログアウト、ユーザープロファイル情報が備わっているはずです。これでクイックスタートチュートリアルは終了ですが、機能はまだまだたくさんあります。Auth0でできることについて詳しくは、以下をご覧ください。- Auth0 Dashboard - Auth0のテナントやアプリケーションを構成して管理する方法について説明します
- Okta Spring Boot Starter SDK - このチュートリアルで使用されているSDKをより詳しく説明します
- Auth0 Marketplace - Auth0の機能性を拡張できる各種の統合を見つけられます