次の方法で共有


汎用 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 を使用するその他のクライアントで実装できます。