- 2 つの Node.js API:
contactsとcalendar(マイクロサービスと考えることができます) - 2 つの API を表す 1 つのリソースサーバー
- 2 つの名前空間付きスコープ:
read:contactsとread:calendar - 両方の API で機能する
access_tokenを取得するためのインプリシットグラントフロー
Organizer Service という 1 つの Auth0 API だけを使って表します。次に 2 つのスコープを作成し、インプリシットフロー を使って SPA から calendar API と contacts API にアクセスする方法を示します。
次の手順を完了する必要があります。
- アプリケーションの接続を有効にする
- テストユーザーを作成する
- Auth0 に論理 API を登録する
- 論理 API のスコープを設定する
- 論理 API へのアクセスを付与する
- (任意) シングルログアウト (SLO) またはシングルサインオン (SSO) を実装する
前提条件
-
アプリケーションを登録します。
- アプリケーションの種類 で Single-Page App を選択します。
- Allowed Callback URLs に
http://localhost:3000とhttp://localhost:3000/callback.htmlを追加します。
- サンプルアプリケーションをダウンロードします。セットアップ方法については、READMEを参照してください。
アプリケーションで接続を有効にする
テストユーザーを作成する
Auth0 で論理 API を登録する
Organizer Service、一意の識別子を organize に設定します。既定では、この API 用に取得するトークンの は RS256 なので、そのままにしておきます。詳しくは、API を登録する を参照してください。
論理 API の権限を設定する
calendar という API と、contacts という別の API から read できるようにしたいため、次の権限を作成する必要があります。
read:calendarread:contacts
論理 API へのアクセスを付与する
- Machine-to-Machine Application がある場合は、クライアント認証情報フロー を実行することで、そのアプリケーションが API 用のアクセストークンをリクエストできるように認可できます。
- Native App を構築している場合は、Authorization Code Flow with Proof Key for Code Exchange (PKCE) を実装できます。
-
ユーザーが SPA 内で Login をクリックすると、アプリはユーザーを Auth0 認可サーバー (
/authorizeエンドポイント) にリダイレクトします。このリクエストのパラメーターについて詳しくは、チュートリアル「Call Your API Using the Authorization Code Flow with PKCE」をご覧ください。
-
Auth0 認可サーバーはユーザーをログインページにリダイレクトし、そこでユーザーは設定済みのログインオプションのいずれかを使って認証します。

-
ユーザーがこのフローを利用するのが初めての場合、SPA に対して Auth0 が付与する権限の一覧を示す同意プロンプトが表示されます。この場合、ユーザーにはアプリが自分の連絡先とカレンダーを読み取ることへの同意が求められます。

-
ユーザーが同意すると、Auth0 は URI のハッシュフラグメントにトークンを含めてユーザーを SPA にリダイレクトします。これで SPA は JavaScript を使用してハッシュフラグメントからトークンを抽出し、アクセストークンを使用してユーザーに代わって API を呼び出せるようになります。
このサンプルでは、ログインに成功すると、論理 API から取得したアクセストークンを使って、いずれかの API を呼び出せるボタンが表示されます。

シングルログアウト (SLO) またはシングルサインオン (SSO) を実装する
checkSession() を使って定期的に Auth0 をポーリングし、セッションが存在するかどうかを確認するようアプリケーションを設定できます。セッションが存在しない場合は、そのユーザーをアプリケーションからログアウトさせることができます。同じポーリング方法は、 (SSO) のシナリオでサイレント認証を実装するためにも使用できます。
今後この呼び出しでレート制限の問題が発生するのを避けるため、checkSession() の確認間隔は、呼び出しと呼び出しの間を少なくとも 15 分空けるようにしてください。