次の方法で共有


汎用 OAuth プロバイダーでシングル サインオンを構成する

Copilot Studio は、OAuth 2.0 互換の認証プロバイダーによるシングル サインオン (SSO) をサポートします。 SSOを使用すると、Webサイトのエージェントは、エージェントがデプロイされているページまたはアプリにログインしたカスタマーをサインインさせることができます。

前提条件

汎用 OAuth プロバイダーの SSO フローをサポートするカスタム キャンバスを作成または使用する

一般的な OAuth 2.0 プロバイダーに接続されたエージェントで認証トピックがトリガーされると、Copilot Studio はユーザーのアクセス トークンをポストするために使用されるセキュアな URL を含むメッセージを送信します。

カスタム キャンバスまたはキャンバスが埋め込まれているページでは、次のパターンを実装する必要があります:

  1. 好みの方法を使用して、OAuth 2.0 認証プロバイダーからサインインしたユーザーのアクセス トークンを取得します。

  2. Copilot Studio からの受信メッセージを傍受し、安全な URL を抽出します。

  3. アクセス トークン をセキュアな URL にポストします。

セキュアな URL を抽出し、トークンをポストします

カスタム キャンバスは、Copilot Studio からのメッセージを受信するコンテキストで実行されるコードであるミドルウェアの概念を使用して、受信メッセージをインターセプトします。

サインイン要求に応答するには、カスタムキャンバスでコンテンツ タイプ application/vnd.microsoft.card.oauth の添付ファイル付きメッセージをインターセプトする必要があります。 OAuthCard の添付ファイルには、content.tokenPostResource.sasUrl プロパティから安全な URL を抽出できます。 最後に、カスタム キャンバスはユーザーの アクセス トークン をセキュリティで保護された URL にポストする必要があります。

次の JavaScript コードは、セキュアな URL を抽出してトークンをポストするミドルウェアのコードの例です。 ポストが成功した場合、ミドルウェアは false を返します。 ポストが失敗した場合、またはアクティビティが application/vnd.microsoft.card.oauth プロパティを持っていない場合は、next(…args) を返します。

const activityMiddleware = () => next => (...args) => {
  if (args[0].activity.attachments?.[0]?.contentType === 'application/vnd.microsoft.card.oauth') {
    var postEndpoint = args[0].activity.attachments?.[0].content.tokenPostResource.sasUrl;

    // Perform an HTTP POST to the secure URL with the body of:
    // {
    //     "token": <user_token> 
    // } 

    if(success)
       return false;
    else
       return next(...args);
  } else {
    return next(...args);
  }
};

完全なサンプル コード

サインインしたユーザーのトークンを取得し、トークンを Copilot Studio にポストするカスタム キャンバスまたはアプリの実装は、認証プロバイダによって異なります。 サインイン フローとアクセス トークンの取得の詳細については、認証プロバイダーのドキュメントを参照してください。 OKTA を使用した参照サンプルについては、OKTA を使用したサードパーティの SSOを参照してください。

Copilot Studio でのトークンの使用

セキュアな URL を使ってポストされたトークンは、Copilot Studio の System.User.AccessToken 変数に入力されます。 エージェント作成者は、このシステム変数を使用して、トークンを生成した認証済みプロバイダーに接続されている保護された API にアクセスできます。

次の例では、System.User.AccessToken を使用する Authorization ヘッダーで HTTP 呼び出しが構成されています。

安全な APU にアクセスする HTTP 呼び出しを示すスクリーンショット。

サポート対象のチャネル

汎用 OAuth 認証プロバイダーを使用した SSO はカスタムパターンで、カスタム キャンバスまたは Directline API を使用するその他のクライアントで実装できます。