外部 API ゲートウェイの認証の提供
学習の目的
- OpenID Connect 動的クライアント登録とトークンイントロスペクションについて説明する。
- Salesforce で接続アプリケーションを使用して、外部 API ゲートウェイの認証を提供する方法を説明する。
OpenID Connect 動的クライアント登録とトークンイントロスペクション
最初の単元で、外部 API ゲートウェイでホストされているリソースを保護するために、Salesforce を独立した OAuth 認証サーバーとして機能させるユースケースについて説明しました。接続アプリケーションのこのユースケースは、動的クライアント登録とトークンイントロスペクションによって実現します。
動的クライアント登録によって、リソースサーバーがクライアントアプリケーションを接続アプリケーションとして動的に作成できるようになります。クライアントアプリケーションは、保護されているリソースへのアクセスを要求する外部アプリケーションです。クライアントアプリケーションを接続アプリケーションとして動的に作成するために、リソースサーバーが認証サーバーに、クライアントアプリケーションの接続アプリケーションを作成する要求を送信します。認証サーバーがリソースサーバーの要求を検証して接続アプリケーションを作成し、一意のクライアント ID とクライアントの秘密を付与します。
トークンイントロスペクションでは、すべての OAuth 接続アプリケーションが、OAuth 2.0 のアクセストークンや更新トークンの現在の状態を確認できます。リソースサーバーまたは接続アプリケーションが、クライアントアプリケーションのクライアント ID と秘密を認証サーバーに送信して、OAuth 認証フローを開始します。このフローの中で、認証サーバーがクライアントアプリケーションのアクセストークンを検証 (または調査) します。アクセストークンが最新で有効な場合は、クライアントアプリケーションにアクセスが許可されます。
外部 API ゲートウェイの認証フロー
OpenID Connect 動的クライアント登録とトークンイントロスペクションは、やや複雑に思えるかもしれません。ですので、次の例に沿ってフローを順に見ていきましょう。
ここでは、Salesforce パートナーが独自に注文状況データにアクセスできるようにしたいと思います。そこで、MuleSoft の Anypoint Platform 上にリリースされている API ゲートウェイでフロントに配置して、注文状況を複数のシステムに公開するサービスを構築します。このデータに対する保護されたアクセスを有効にするには、次の手順を実行します。
- OpenID トークン強制適用ポリシーを API ゲートウェイポリシーに適用します。
- Mulesoft の Anypoint Platform 上で Salesforce をクライアント管理プロバイダーとして設定します。
この設定では、OpenID Connect 動的クライアント登録とトークンイントロスペクションフローで、API ゲートウェイが Salesforce をその認証プロバイダーとして使用します。
- API ゲートウェイがクライアントアプリケーションを Salesforce 動的クライアント登録エンドポイントに登録します。
- API ゲートウェイが、関連付けられている認証許可種別に基づいて、クライアントアプリケーションを承認する要求を Salesforce 認証エンドポイントに送信します。
- 検証に成功すると、Salesforce がクライアントアプリケーションのアクセストークンを生成します。
- API ゲートウェイが、アクセストークンを検証する要求を Salesforce トークンイントロスペクションエンドポイントに送信します。
- 検証に成功すると、API ゲートウェイが、クライアントアプリケーションに保護されているデータへのアクセスを許可します。
ここですべてまとめてみましょう。
- MuleSoft の API ポータルで Order Status (注文状況) API を使用できます。
- パートナーが MuleSoft にログインし、Order Status (注文状況) API にアクセスするためのクライアントアプリケーションを作成します。
- この新しいクライアントアプリケーションが、クライアントアプリケーションの接続アプリケーションを作成する要求を Salesforce 動的クライアント登録エンドポイントに自動的に送信します。
- 登録に成功すると、Salesforce がクライアントアプリケーションのクライアント ID とクライアントの秘密を返し、これがパートナーに共有されます。
- パートナーが、クライアントを承認する許可種別 (認証コード) を指定して、クライアントのログイン情報を記した要求を API ゲートウェイに送信します。
- パートナーがブラウザーにリダイレクトされ、Salesforce にログインしてデータへのアクセスを承認します。この承認は、Salesforce の対応する接続アプリケーションに関連付けられている範囲に基づきます。
- 認証コード許可フローに成功すると、Salesforce がアクセストークンをクライアントアプリケーションに送信します。
- クライアントアプリケーションがそのアクセストークンを API ゲートウェイに送信し、保護されている注文状況データへのアクセスを要求します。
- API ゲートウェイがアクセストークンを抽出し、Salesforce トークンイントロスペクションエンドポイントに送信します。
- Salesforce がアクセストークンを検証します。
- API ゲートウェイが、MuleSoft でホストされている Order Status (注文状況) API で保護されているデータへのアクセスをクライアントアプリケーションに許可します。