使用 Microsoft Entra ID 配置单一登录

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

例如,代理托管在用户已登录的企业 Intranet 中或应用中。

为 Copilot Studio 配置 SSO 有五个主要步骤:

  1. 使用 Microsoft Entra ID 为智能体启用手动身份验证

  2. 在 Microsoft Entra ID 中为自定义区域创建应用注册。

  3. 在 Microsoft Entra ID 中为您的智能体定义自定义范围。

  4. 将自定义范围添加到智能体配置。

  5. 配置自定义画布客户端代码以启用 SSO。

先决条件

备注

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

支持的渠道

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

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

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

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

重要提示

当智能体出现以下任一情况时,当前不支持 SSO:

但是,作为 SPFx 组件发布到 SharePoint 网站的智能体支持 SSO。

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

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

  • 身份验证应用注册,可为智能体启用 Microsoft Entra ID 用户身份验证
  • 一个画布应用注册,它支持自定义网页的 SSO

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

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

  2. 创建第二个应用注册,作为您的画布应用注册。

添加令牌交换 URL

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

  1. 在身份验证应用的注册页上的 Azure 门户中,转到 “公开 API”。

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

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

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

  5. 选择保存

配置画布应用客户端 ID 以公开 API 菜单

  1. 在身份验证应用注册页上的 Azure 门户中,转到 “概述”。

  2. 复制 Essentials 下的“应用程序”(客户端)ID 值。

  3. 在导航栏上,选择“ 管理>公开 API”。

  4. “授权客户端应用程序”下,选择“ + 添加客户端应用程序”,然后粘贴复制的客户端 ID。

  5. 选择保存

配置画布应用注册

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

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

  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 存储库复制代码,然后按照以下说明进行修改。

  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/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'     
            },
    
  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. 保存您的更改。

  6. 验证是否已成功配置 SSO。

    测试代理时, 如果未成功配置 SSO,系统会提示你登录,这为你提供了必须复制到聊天窗口中的验证代码。

    如果您看到登录提示,请验证是否正确完成了此过程的步骤 1 到步骤 5。 如果 SSO 成功配置,则不会提示登录。

    备注

    GitHub 存储库中的代码要求用户选择登录按钮。 在生产环境中,你可能想要将按钮功能替换为更合适的事件,例如导航到页面。