- 2つの Node.js API:
contacts
とcalendar
(マイクロサービスと考えることができます) - 2つのAPIを表す1つのリソースサーバー
- 2つの名前空間スコープ:
read:contacts
およびread:calendar
- 両方のAPIで機能する
access_token
を取得するための暗黙の付与フロー
Organizer Service
という1つのAuth0 APIを使用して表します。次に、暗黙のフローを使用してSPAからcalendar
APIとcontacts
APIにアクセスする方法を示す2つのスコープを作成します。
次のステップを完了する必要があります。
- アプリケーションの接続を有効にする
- テストユーザーを作成する
- Auth0で論理APIを登録する
- 論理APIのスコープを構成する
- 論理APIへのアクセスを許可する
- (オプション)シングルログアウト(SLO)またはシングルサインオン(SSO)を実装する
前提条件
-
アプリケーションを登録します。
- シングルページアプリ のアプリケーションタイプ を選択します。
http://localhost:3000
およびhttp://localhost:3000/callback.html
の許可されたコールバックURL を追加します。
- サンプルアプリケーションをダウンロードします。サンプルアプリケーションの設定方法については、READMEをお読みください。
アプリケーションの接続を有効にする
新しく登録したアプリケーションにはユーザーのソースが必要なので、接続を構成する必要があります。このサンプルでは、ユーザーのメールアドレスとパスワードのみを要求するシンプルなデータベース接続を作成します。詳細については、データベース接続の設定をお読みください。テストユーザーを作成する
新しく作成した接続を使用しているため、それに関連付けられたユーザーはいません。サンプルアプリケーションのログインプロセスをテストする前に、ユーザーを作成して接続に関連付ける必要があります。ユーザーを作成するときは、新しく作成した接続を選択してください。詳細については、ユーザーの作成をお読みください。Auth0で論理APIを登録する
サンプルアプリケーション内に含まれる複数のAPIを表すために使用する単一の論理APIを登録します。このサンプルでは、APIのOrganizer Service
を呼び出して、その一意の識別子をorganize
に設定します。デフォルトでは、このAPI用に取得されたトークンの署名アルゴリズムはRS256 ですが、そのままにしておきます。詳細については、「APIを登録する」お読みください。
論理APIの権限を構成する
論理APIがサンプルアプリケーション内に含まれるAPIを表すようにするには、適切な権限(スコープ)を作成する必要があります。 スコープを使用すると、呼び出し元のアプリケーションがアクセスできるAPIアクションを定義できます。1つのスコープは1つのAPI/アクションの組み合わせを表します。このサンプルでは、呼び出し元のアプリケーションがcalendar
という1つのAPIとcontacts
という別のAPIからread
ことができるようにする必要があるため、次の権限を作成する必要があります。
read:calendar
read:contacts
論理APIへのアクセスを許可する
これで、論理APIがアクセストークンを取得できるようにすることで、APIへのアクセスを提供する準備が整いました。必要なスコープを含めることで、論理APIによって表されるAPIへのアプリケーションのアクセスを制御できます。次の手順では、暗黙的なフローを使用してサンプルを反映しています。ただし、ニーズに最適なフローを使用できます。例:- マシン間アプリケーション がある場合は、クライアントの資格情報フローを実行して、APIのアクセストークンを要求することを承認できます。
- ネイティブアプリ を構築している場合は、コード交換用証明キー(PKCE)を使用して承認コードフローを実装できます。
-
ユーザーがSPA内でログインをクリックすると、アプリはユーザーをAuth0承認サーバー(
/authorize
エンドポイント)にリダイレクトします。呼び出しのパラメーターの詳細については、チュートリアルをご覧ください。PKCEを使った認可コードフローで独自のAPIを呼び出し。 -
Auth0承認サーバーはユーザーをログインページにリダイレクトし、ユーザーは構成されたログインオプションの1つを使用して認証します。
-
ユーザーがこのフローを初めて通過する場合は、Auth0がSPAに付与する権限をリストした同意プロンプトが表示されます。この場合、ユーザーはアプリが連絡先とカレンダーを読み取ることに同意するよう求められます。
-
ユーザーが同意すると、Auth0はURIのハッシュフラグメントにトークンを含むSPAにユーザーをリダイレクトします。SPAは、JavaScriptを使用してハッシュフラグメントからトークンを抽出し、ユーザーに代わってAPIを呼び出すことができるようになりました。

シングルログアウト(SLO)またはシングルサインオン(SSO)を実装する
シングルログアウトが必要な一部のマルチアプリケーションのシナリオ(あるアプリケーションからログアウトするユーザーが他のアプリケーションからもログアウトする必要があるような場合)では、checkSession()
を使用して定期的にAuth0をポーリングし、セッションが存在するかどうかを確認するようにアプリケーションを設定できます。セッションがない場合は、ユーザーをアプリケーションからログアウトさせることができます。同じポーリング方式を使用して、シングルサインオン()のシナリオにサイレント認証を実装することができます。
ポーリング間隔として、checkSession()
の呼び出し間隔を15分以上に設定し、レート制限の問題が生じないようにします。