複数のAPIの論理APIを構成する
論理的にはすべて同じAPIの一部である複数の異なる API 実装がある場合、Auth0ダッシュボードで単一の論理APIを使用してそれらを表すことで、承認プロセスを簡素化できます。これを行うと、適切なスコープを割り当てることで個々のAPIへのアクセスを制御しながら、1つの承認フローのみを実装できます。
次のセクションでは、Auth0で複数のAPIを単一のリソース サーバーとして使用して表す方法について説明します。例では、次のサンプルアプリケーションを使用します。サンプルアプリケーションはマイクロサービスアーキテクチャを使用し、次のものが含まれています。
2つの Node.js API:
contacts
とcalendar
(マイクロサービスと考えることができます)2つのAPIを表す1つのリソースサーバー
2つの名前空間スコープ:
read:contacts
およびread:calendar
両方の API で機能する
access_token
を取得するための暗黙の付与フロー
2つのAPIを、Organizer Service
という1つのAuth0 APIを使用して表します。次に、暗黙のフローを使用して SPA からカレンダー
APIと連絡先
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アクションを定義できます。1つのスコープは1つのAPI/アクションの組み合わせを表します。このサンプルでは、呼び出し元のアプリケーションがカレンダー
という1つのAPIと連絡先
という別のAPIから読み取る
ことができるようにする必要があるため、次の権限を作成する必要があります。
read:calendar
read:contacts
それぞれをマイクロサービスと考えることができます。詳細については、API権限の追加およびAPIスコープをお読みください。
論理APIへのアクセスを許可する
これで、論理APIがアクセストークンを取得できるようにすることで、APIへのアクセスを提供する準備が整いました。必要なスコープを含めることで、論理APIによって表されるAPIへのアプリケーションのアクセスを制御できます。次の手順では、暗黙的なフローを使用してサンプルを反映しています。ただし、ニーズに最適なフローを使用できます。例:
マシン間アプリケーションがある場合は、クライアントの資格情報フローを実行して、APIのアクセストークンを要求することを承認できます。
ネイティブアプリを構築している場合は、コード交換用証明キー(PKCE)を使用して承認コードフローを実装できます。
承認フローの詳細については、認可と承認フローをお読みください。
ユーザーがSPA内でログインをクリックすると、アプリはユーザーをAuth0承認サーバー(
/authorize
エンドポイント)にリダイレクトします。呼び出しのパラメーターの詳細については、チュートリアルをご覧ください。PKCEを使った認可コードフローで独自のAPIを呼び出し。codeblockOld.header.login.configureSnippethttps://{yourDomain}/authorize? scope=read:contacts%20read:calendar& audience=organize& response_type=id_token%20token& client_id={yourClientId}& redirect_uri=http://localhost:3000& nonce={nonce}
Was this helpful?
/Auth0承認サーバーはユーザーをログインページにリダイレクトし、ユーザーは構成されたログインオプションの1つを使用して認証します。
ユーザーがこのフローを初めて通過する場合は、Auth0がSPAに付与する権限をリストした同意プロンプトが表示されます。この場合、ユーザーはアプリが連絡先とカレンダーを読み取ることに同意するよう求められます。
ユーザーが同意すると、Auth0はURIのハッシュフラグメントにトークンを含むSPAにユーザーをリダイレクトします。SPAは、JavaScriptを使用してハッシュフラグメントからトークンを抽出し、ユーザーに代わってAPIを呼び出すことができるようになりました。
function getParameterByName(name) { var match = RegExp('[#&]' + name + '=([^&]*)').exec(window.location.hash); return match && decodeURIComponent(match[1].replace(/\+/g, ' ')); } function getAccessToken() { return getParameterByName('access_token'); }
Was this helpful?
/
サンプルでは、ログインに成功すると、論理 API から取得したアクセストークンを使用していずれかのAPIを呼び出すためのボタンが表示されます。

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