始める前に
- ネイティブアプリケーションと Web アプリケーションを登録して設定するための Auth0 テナントを作成します。
- Auth0 テナント用に Auth0 CLI をインストールして設定します。
- プラットフォームに応じた Quickstart を使用して、ネイティブアプリケーションに Auth0 Authentication を追加します。
- ネイティブアプリケーションに refresh_token のサポートを追加します。
- React Single Page App Quickstart を使用して、Web アプリケーションに Auth0 Authentication を追加します。
session_transfer_token を使って、ユーザーの認証コンテキストを Web アプリケーションに送信できます。
以下のセクションでは、次の追加方法について説明します。
- ネイティブアプリケーションに、認証済みユーザーが安全な Web チェックアウト画面を通じて有料会員プランに登録できる Subscribe Now ボタン。
- Web アプリケーションに、ユーザーが再度ログインすることなく会員プランを選択できる Subscription ページ。
このユースケースでは、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 を選択し、ログインフローに従ってください。
- Native to Web SSO を有効にする Auth0 テナントを選択します。
Auth0を設定する
ネイティブアプリケーションで Native to Web SSO を有効にする
session_transfer_token を使用して、ネイティブアプリケーションから Web アプリケーションへの SSO を確立します。session_transfer_token を使用すると、Auth0 はユーザー、送信元のネイティブアプリケーション、および追加のコンテキストを安全に識別できます。詳細については、Native to Web SSO を参照してください。
Auth0 CLI を使用して Native to Web SSO を有効にします。
Web アプリケーションで Native to Web SSO を有効にする
session_transfer_token を認証に利用できるよう、Web アプリケーションを有効にします。
session_transfer_token が Cookie を介してブラウザーに注入される場合、Web アプリケーションに追加の変更は必要ありません。必要なのは、ブラウザーが、ユーザーを 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 ルート:
- ユーザーが認証済みかどうかを判定します。認証されていない場合は、ユーザーを ページにリダイレクトします。
- URL パラメーターとして
session_transfer_tokenが追加されている場合、そのトークンは認証リクエストに渡されます。 - 認証後、ユーザーには異なるメンバーシッププランに登録するためのボタンが表示されます。
ネイティブアプリケーションを設定する
refresh_token を session_transfer_token に交換する必要があります。そのため、セッショントランスファーの交換処理と Webアプリケーションを起動するロジックは、同じイベントハンドラー内に追加してください。たとえば、ボタンの onClick メソッド内です。
iOS
ProfileView.swift ファイルに Subscribe to Membership ボタンを追加します。
ProfileView.swift ファイルの body を編集し、ユーザー情報の下にボタンを追加します:
ProfileView.swift ファイルでは、Subscribe to Membership ボタンを追加し、選択されたときの動作を定義するために onSubscribe クロージャを使用します。
ステップ 2: Native to Web SSO を使用してサブスクリプションフローを実装する
MainView.swift ファイルを編集し、Subscribe to Membership ボタンの動作を定義します。
このサンプルでは、説明用にオーディエンス
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: Native to Web SSO を使用してサブスクリプションフローを実装する
MainActivity.kt ファイルを編集して、Subscribe to Membership ボタンの動作を定義します。
- ログインフローを拡張し、サブスクリプション処理を実装します。
credentialsManager:を含めるようにonCreate()メソッドを更新します
loginwithBrowser()メソッドを更新し、credentialsManager:を使用して認証情報を保存するようにします
このサンプルでは、説明のためにオーディエンス
https://sample.api.com を使用しています。Auth0 テナントでこの識別子を持つ API を作成することも、ご自身の API 識別子に置き換えることもできます。詳細については、Set Up APIs を参照してください。- Web アプリケーションを開くには、
launchSubscriptionFlow()メソッドを追加します。
Subscribe to Membership を選択し、再度ログインすることなく、すぐに Web アプリケーションのサブスクリプション手続きを開始できます。
Native to Web SSO の実装をテストする
- 保存されている
refresh_tokenを使用して、安全なsession_transfer_tokenをリクエストします session_transfer_tokenが Auth0 ドメイン用の cookie に設定されますWKWebViewを使用して、Web アプリケーションの/join-membershipルートを読み込みます- Web アプリケーションが
session_transfer_tokenを受け取り、Native to Web SSO を使用してログインを完了します - ユーザーには、Web アプリケーションですぐにサブスクリプションオプションが表示されます
次のステップ
- Native to Web SSO の設定オプションをさらに詳しく見る:セッションの有効期間、のローテーション、デバイスバインディング、カスケード失効について、Native to Web SSO ドキュメントで詳しく確認してください。
- Progressive Profiling でログイン後のエクスペリエンスをカスタマイズする:Auth0 の Progressive Profile Form を使用して、ログイン後にプランの希望、住所、支払いの意向などの追加のユーザーデータを収集し、サブスクリプションの選択肢を表示する前に必要な情報を取得します。