始める前に
- ネイティブアプリケーションと Web アプリケーションを登録・設定するための Auth0 テナントを作成します。
- Auth0 テナント向けに Auth0 CLI をインストールして設定します。
- お使いのプラットフォームに対応する Quickstart を使って、ネイティブアプリケーションに Auth0 認証を追加します。
- ネイティブアプリケーションに refresh_token のサポートを追加します。
- React Single Page App Quickstart を使って、Web アプリケーションに Auth0 認証を追加します。
session_transfer_token を使って、ユーザーの認証コンテキストを Web アプリケーションに送信できます。
以下のセクションでは、次の機能を追加する方法を説明します。
- ネイティブアプリケーションには、認証済みユーザーが安全な Web チェックアウト画面を通じて有料メンバーシッププランに登録できる「今すぐ登録」ボタン。
- Web アプリケーションには、ユーザーが再度ログインすることなくメンバーシップのサブスクリプションを選択できる「サブスクリプション」ページ。
このユースケースでは、Auth0 React SDK を使用する React ベースの Web アプリケーションに焦点を当てています。Node や Express など別のフレームワークを使用している場合でも、URL パラメーターまたは Cookie を介して
session_transfer_token を管理するロジックに応じて適宜対応できます。Auth0 CLI を設定する
Auth0 CLI を使用して、Auth0 テナントを設定します。Auth0 Management API を使用することもできます。詳しくは、ネイティブからWebへのSSOを設定する を参照してください。
- Auth0 CLI を初期化する
- As a user を選択し、ログインフローに従います。
- ネイティブからWebへのSSOを有効にするAuth0 テナントを選択します。
Auth0 を設定する
ネイティブアプリケーションでネイティブからWebへのSSOを有効にする
session_transfer_token を使用します。session_transfer_token を使用すると、Auth0 はユーザー、元のネイティブアプリケーション、および追加のコンテキストを安全に識別できます。詳しくは、Native to Web SSO をご覧ください。
Auth0 CLI を使用してネイティブからWebへのSSOを有効にします:
WebアプリケーションでネイティブからWebへのSSOを有効にする
session_transfer_token を受け入れられるよう、Webアプリケーションを有効にします。
session_transfer_token が Cookie としてブラウザーに設定される場合、ウェブアプリケーション側で追加の変更を行う必要はありません。必要なのは、ユーザーを Auth0 テナントの /authorize エンドポイントにリダイレクトするために、ブラウザーがアプリケーションの Login URI に遷移することだけです。
Application Login URI は、Auth0 Dashboard のアプリケーション設定で構成できます。これは、外部ソースからログインが開始されたときに Auth0 がユーザーをリダイレクトする先のルートです。
Webアプリケーションにサブスクリプションページを作成する
/src/views/ に新しいファイルを追加します:
ステップ 1: 新しいビューファイルを追加する
src/views/JoinMembership.js にファイルを作成します。このファイルでは、ユーザーに有料サブスクリプションの手続きを完了するよう求めます。
手順 2: 新しいルートを追加する
src/App.js ファイルを編集し、新しいサブスクリプションページに /join-membership ルートを追加します。
/join-membership ルートでは、次の処理を行います。
- ユーザーが認証済みかどうかを判定します。認証されていない場合は、ユーザーを ページにリダイレクトします。
session_transfer_tokenが URL パラメーターとして追加されている場合、その token は認証リクエストに渡されます。- 認証が完了すると、ユーザーにはさまざまなメンバーシッププランに登録するためのボタンが表示されます。
ネイティブアプリケーションを設定する
refresh_token を session_transfer_token に交換する必要があります。そのため、セッション転送のための交換処理とウェブアプリケーションを起動するロジックは、同じイベントハンドラー内 (たとえばボタンの onClick メソッド) に追加します。
iOS
ProfileView.swift ファイルに Subscribe to Membership ボタンを追加します。
ProfileView.swift ファイルの body を編集し、ユーザー情報の下にボタンを追加します:
ProfileView.swift ファイルでは、Subscribe to Membership ボタンを追加し、選択時の動作を onSubscribe クロージャで決定します。
ステップ 2: ネイティブからWebへのSSOを使ってサブスクリプション フローを実装する
Subscribe to Membership ボタンの動作を定義するには、MainView.swift ファイルを編集します。
このサンプルでは、説明のために audience
https://sample.api.com を使用しています。この識別子を持つ API を Auth0 テナントに作成することも、ご自身の API の識別子に置き換えることもできます。詳しくは、Set Up APIsをご覧ください。Subscribe to Membership を選択し、再度ログインすることなく、すぐに Web アプリケーションでのサブスクリプション手続きを開始できます。
Android
Subscribe to Membershipボタンを追加します。
MainActivity.ktファイルを編集し、onCreate()メソッドに次のコードを追加します。
activity_main.xml ファイルを編集し、@+id/button_patch_metadata ボタンの後に以下のコードを追加します:
ステップ 2: ネイティブからWebへのSSOを使用してサブスクリプションフローを実装する
Subscribe to Membership ボタンの動作を定義するため、MainActivity.kt ファイルを編集します。
- ログインフローを拡張し、サブスクリプション操作を処理します。
onCreate()メソッドにcredentialsManager:を追加するよう更新します
loginwithBrowser()メソッドを更新し、credentialsManager:を使用して資格情報を保存するようにします
このサンプルでは、説明のために audience
https://sample.api.com を使用しています。Auth0 テナントでこの識別子を持つ API を作成することも、ご自身の API 識別子に置き換えることもできます。詳しくは、Set Up APIs を参照してください。- Web アプリケーションを開くには、
launchSubscriptionFlow()メソッドを追加します:
Subscribe to Membership を選択するだけで、再度ログインすることなく、すぐに Web アプリでの登録手続きを開始できます。
ネイティブからWebへのSSOの実装をテストする
- 保存されている
refresh_tokenを使用して、安全なsession_transfer_tokenを取得します session_transfer_tokenが Auth0ドメインの Cookie に設定されますWKWebViewを使用して、Webアプリケーションの/join-membershipルートを読み込みます- Webアプリケーションが
session_transfer_tokenを受け取り、ネイティブからWebへのSSO を使用してログインを完了します - ユーザーには、Webアプリケーションですぐに登録オプションが表示されます
次のステップ
- ネイティブからWebへのSSOの設定オプションをさらに確認する:セッションの有効期間、のローテーション、デバイスバインディング、カスケード失効について、ネイティブからWebへのSSOのドキュメントで詳しく確認してください。
- Progressive Profilingでpost-loginエクスペリエンスをカスタマイズする:Auth0のProgressive Profile Formを使用して、ログイン後に追加のユーザーデータ (プランの希望、住所、支払いの意向など) を収集し、サブスクリプションオプションを表示する前に活用できます。