配置 Web 和 Direct Line 渠道安全性

创建 Microsoft Copilot Studio 助手时,其将立即在演示网站自定义网站渠道中显示,以供知道助手 ID 的任何人使用。 默认情况下可使用这些渠道,无需进行任何配置。

对于 Microsoft Teams 应用,您可以配置高级 Web 渠道安全选项。

备注

如果您有仅 Teams 许可证,无法生成密码来启用安全访问。 将为您自动创建安全访问令牌,并在默认情况下启用安全访问。

用户可以直接从 Microsoft Copilot Studio 内部或通过从某人处接收来找到助手 ID。 但是,具体取决于助手的功能和可能不需要的敏感性。

基于 Direct Line 的安全性让您可以通过启用采用 Direct Line 机密或令牌的安全访问来仅访问您控制的位置。

也可以交换和重新生成机密并刷新令牌,还可以在不再需要使用安全访问时轻松禁用安全访问。

备注

Microsoft Copilot Studio 使用 Bot Framework Direct Line 渠道将您的网页或应用连接到助手。

启用或禁用 Web 渠道安全性

可以强制为每一个助手使用机密和令牌。

选择此选项之后,渠道需要客户端通过使用机密或通过使用使用机密生成的令牌(运行时获取的)对请求进行身份验证。

对不提供此安全措施的助手进行的任何访问都无效。

  1. 在您的助手下方的设置下,选择安全。 然后选择 Web 渠道安全性磁贴。

    屏幕截图显示“设置”弹出项目突出显示了 Web 渠道安全性。

  2. 需要安全访问开关切换为启用

    屏幕截图显示 Web 渠道安全性页面。

警告

启用或禁用“需要安全访问”之后,系统需要最多两个小时来传播设置和让设置生效。 在此之前,之前的设置有效。 您不需要发布助手来让此更改生效。

应该提前计划,以免无意暴露您的助手。

如果需要禁用 Web 渠道安全性选项,可以将需要安全访问切换为禁用。 禁用安全访问可能需要最多两个小时才会传播出去。

屏幕截图显示禁用安全访问后的确认消息,内容是此操作将显示演示网站,以及不使用可用机密或令牌的所有 Direct Line 渠道。此操作可能需要最多两小时才会生效。

使用机密或令牌

如果创建服务对服务应用,则最简单的方法可能是在授权标头请求中指定机密。

如果编写的应用是客户端在 Web 浏览器或移动应用中运行,否则可能会对客户显示代码,则必须将机密更换为令牌。 如果不使用令牌,可能会泄露机密。 请求获取服务中的令牌时,请在授权标头中指定机密。

令牌仅对单个对话有效,如果不刷新,则会到期。

选择最适合您的情况的安全模型。

警告

我们极不赞成泄露在浏览器中运行的任何(硬编码的或通过网络调用的)代码中的机密。

使用服务代码中的机密获取令牌是最能保护 Microsoft Copilot Studio 助手的安全方法。

获取机密

您需要机密,因此可以在应用的授权标头之类中指定。

  1. 在导航菜单中的设置下面,选择安全性。 然后选择 Web 渠道安全性磁贴。

  2. 机密 1机密 2 选择复制将其复制到粘贴板中。 选择可见性图标 可见性图标。。 显示机密之前,将显示警告提示。

交换密钥

如果需要更改助手正在使用的机密,不需要停机或中断即可完成。

Microsoft Copilot Studio 提供两个机密,这两个机密可以同时有效。 可以将正在使用的机密与另一个交换。 交换机密且用户全部使用新机密连接之后,您就可以安全地重新生成机密。

重新生成密钥

若要重新生成密钥,请选择密钥旁边的重新生成

警告

所有使用原始机密或从该机密获取的令牌的用户都将断开。

生成令牌

可以生成在启动单个助手对话时可使用的令牌。 有关详细信息,请参阅将助手发布到移动应用或自定义应用中的获取 Direct Line 令牌部分。

  1. 获取机密

  2. 通过服务代码发出以下请求将机密交换为令牌。 将 <SECRET> 替换为步骤 1 中获取的机密的值。

    POST https://directline.botframework.com/v3/directline/tokens/generate
    Authorization: Bearer <SECRET>
    

以下代码段提供生成令牌请求及其响应的示例。

示例生成令牌请求

POST https://directline.botframework.com/v3/directline/tokens/generate
Authorization: Bearer RCurR_XV9ZA.cwA.BKA.iaJrC8xpy8qbOF5xnR2vtCX7CZj0LdjAPGfiCpg4Fv0

示例生成令牌响应

HTTP/1.1 200 OK
[other headers]
{
  "conversationId": "abc123",
  "token": "RCurR_XV9ZA.cwA.BKA.iaJrC8xpy8qbOF5xnR2vtCX7CZj0LdjAPGfiCpg4Fv0y8qbOF5xPGfiCpg4Fv0y8qqbOF5x8qbOF5xn",
  "expires_in": 1800
}

如果请求成功,响应中将包含一个对一个对话有效的令牌和一个指示令牌还有多少秒将到期的 expires_in 值。

要让令牌继续有用,必须在到期前刷新令牌

刷新令牌

令牌只要尚未到期,都可以刷新任何次数。

不能刷新已到期的令牌。

若要刷新令牌,请发出以下请求并将 <TOKEN TO BE REFRESHED> 替换为要刷新的令牌。

POST https://directline.botframework.com/v3/directline/tokens/refresh
Authorization: Bearer <TOKEN TO BE REFRESHED>

以下代码段提供刷新令牌请求和响应的示例。

示例刷新请求

POST https://directline.botframework.com/v3/directline/tokens/refresh
Authorization: Bearer CurR_XV9ZA.cwA.BKA.iaJrC8xpy8qbOF5xnR2vtCX7CZj0LdjAPGfiCpg4Fv0y8qbOF5xPGfiCpg4Fv0y8qqbOF5x8qbOF5xn

示例刷新响应

如果请求成功,响应中将包含一个对之前令牌的同一个对话有效的新令牌和一个指示新令牌还有多少秒将到期的 expires_in 值。

要让新令牌继续有用,必须在到期前再次刷新令牌。

HTTP/1.1 200 OK
[other headers]
{
  "conversationId": "abc123",
  "token": "RCurR_XV9ZA.cwA.BKA.y8qbOF5xPGfiCpg4Fv0y8qqbOF5x8qbOF5xniaJrC8xpy8qbOF5xnR2vtCX7CZj0LdjAPGfiCpg4Fv0",
  "expires_in": 1800
}

有关刷新令牌的详细信息,请参阅 Direct Line API - 身份验证中的刷新 Direct Line 令牌部分。