使用 Microsoft Entra ID 配置单点登录

Copilot Studio 支持单一登录 (SSO)。 SSO 允许您网站上的代理在客户已经登录到部署了代理的页面或应用程序时登录。

例如,代理托管在公司 Intranet 或用户已登录的应用程序中。

为 Copilot Studio 配置 SSO 主要分四个步骤:

  1. 在 Microsoft Entra ID 中为您的自定义画布创建一个应用程序注册。

  2. 为您的代理定义自定义范围。

  3. 在 Copilot Studio 中配置身份验证以启用 SSO。

  4. 配置您的自定义区域 HTML 代码以启用 SSO。

先决条件

备注

要使用其他 OAuth 2.0 提供程序配置 SSO,请参阅 使用通用 OAuth 提供程序配置单点登录

支持的渠道

下表详细介绍了当前支持 SSO 的渠道。 您可以在想法论坛上 建议支持额外的频道 Copilot Studio

频道 受支持
Azure 机器人服务渠道 不支持
自定义网站 受支持
演示网站 不支持
Facebook 不支持
Microsoft Teams1 受支持
移动应用 不支持
Customer Service 全渠道2 受支持

1 如果您还启用了 Teams 通道,则需要跟随文档中的使用 ID 为代理 Microsoft Entra 配置单点登录中的配置说明 Microsoft Teams 。 未能按照该页面上的说明配置 Teams SSO 设置,会致使您的用户在使用 Teams 渠道时始终无法通过身份验证。

2 仅支持实时聊天渠道。 有关详细信息,请参阅配置转接到 Dynamics 365 Customer Service

重要提示

当代理已满足以下任一条件时,当前不支持 SSO:

但是,已作为 SharePoint SPFx 组件 发布到网站的代理支持 SSO。

为自定义网站创建应用注册

要启用 SSO,您需要创建两个单独的应用注册:

  • 身份验证 应用程序注册,为您的 # 启用 Microsoft Entra ID 用户身份验证代理
  • 一个画布应用注册,它支持自定义网页的 SSO

出于安全原因,我们不建议对代理和自定义网站重复使用相同的应用程序注册。

  1. 按照使用 Microsoft Entra ID 配置用户身份验证中的说明创建身份验证应用程序注册。

  2. 再次按照说明创建身份验证应用注册,创建第二个应用注册,作为您的画布应用注册。

  3. 将画布应用程序注册 ID 添加到身份验证应用程序注册中。

添加令牌交换 URL

若要更新 Copilot Studio 中的 Microsoft Entra ID 身份验证设置,您需要添加令牌交换 URL 以允许您的应用程序和 Copilot Studio 共享信息。

  1. 在身份验证应用注册边栏选项卡上的 Azure 门户中,转到公开 API

  2. 范围下,选择复制到剪贴板图标。

  3. 在 Copilot Studio 内的导航菜单中的设置下面,选择安全性,然后选择身份验证磁贴。

  4. 对于令牌交换 URL(SSO 需要),粘贴之前复制的范围。

  5. 选择保存

配置画布应用注册

  1. 创建画布应用注册后,转到身份验证,然后选择添加平台

  2. 平台配置下,选择添加平台,然后选择 Web

  3. 重定向 URL 下,输入您的网页的 URL,例如 http://contoso.com/index.html

    配置网页的屏幕截图。

  4. 隐式授权和混合流部分中,打开访问令牌(用于隐式流)ID 令牌(用于隐式和混合流)

  5. 选择配置

在 URL 终结点查找代理的令牌

  1. 在中 Copilot Studio,打开您的代理,然后选择 频道

  2. 选择移动应用

  3. 令牌终结点下面,选择复制

    在 Copilot Studio 中复制令牌终结点 URL 的屏幕截图。

在网页中配置 SSO

使用 Copilot Studio 的 GitHub 存储库中提供的代码为重定向 URL 创建网页。 从 GitHub 存储库复制代码,然后按照以下说明进行修改。

备注

GitHub 存储库中的代码要求用户选择一个登录按钮或从不同的站点登录。 要启用自动登录,请将以下代码添加到 aysnc function main() 的开头:

    (async function main() {
        if (clientApplication.getAccount() == null) {
           await clientApplication.loginPopup(requestObj).then(onSignin).catch(function (error) {console.log(error) });
        }
        // Add your BOT ID below 
        var theURL =
  1. 转到 Azure 门户内的概览页面,从画布应用注册中复制应用程序(客户端)ID目录(租户)ID

    Azure 门户中应用注册概览页面的屏幕截图,突出显示概览、应用程序 ID 和目录 ID。

  2. 要配置 Microsoft 身份验证库 (MSAL):

    • clientId 分配给您的应用程序(客户端)ID
    • authority 分配给 https://login.microsoftonline.com/,将您的目录(租户)ID 添加到末尾。

    例如:

    var clientApplication;
        (function (){
        var msalConfig = {
            auth: {
                clientId: '00001111-aaaa-2222-bbbb-3333cccc4444',
                authority: 'https://login.microsoftonline.com/7ef988bf-xxxx-51af-01ab-2d7fd011db47'     
            },
    
  3. theURL 变量设置为以前复制的令牌终结点 URL。 例如:

    (async function main() {
    
        var theURL = "https://<token endpoint URL>"
    
  4. 编辑 userId 的值以包含自定义前缀。 例如:

    var userId = clientApplication.account?.accountIdentifier != null ? 
            ("My-custom-prefix" + clientApplication.account.accountIdentifier).substr(0, 64) 
            : (Math.random().toString() + Date.now().toString()).substr(0,64);
    
  5. 保存您的更改。

使用网页测试代理

  1. 在浏览器中打开网页。

  2. 选择登录

    使用验证码登录的屏幕截图

    备注

    如果您的浏览器阻止弹出窗口,或者您正在使用匿名或隐私浏览窗口,系统会提示您登录。 否则,使用验证码完成登录。

    新的浏览器选项卡将打开。

  3. 切换到新标签页,复制验证码。

  4. 切换回带有代理的选项卡,然后将验证代码粘贴到代理对话中。