配置 Web 和 Direct Line 渠道安全性

创建 Copilot Studio 代理后,任何知道代理 ID 的人都可以立即在 演示网站自定义网站 频道中使用它。 默认情况下可使用这些渠道,无需进行任何配置。

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

备注

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

用户可以直接从内部 Copilot Studio 或通过从某人那里接收代理 ID 来找到 # ID。 但是,根据代理的功能和机密性这可能并不可取。

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

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

备注

Copilot Studio 使用通道 Bot Framework Direct Line 将您的网页或应用程序连接代理。

启用或禁用 Web 渠道安全性

您可以强制对每个单独代理使用密码和令牌。

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

任何不提供此安全措施的代理访问都将不起作用。

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

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

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

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

警告

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

您应该提前计划,以避免无意中暴露您的代理。

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

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

使用机密或令牌

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

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

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

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

警告

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

使用服务代码中的 secret 获取令牌是保护 your Copilot Studio 代理的最安全方式。

获取机密

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

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

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

交换密钥

如果您需要更改代理使用的密钥,则可以在不停机或中断的情况下执行此操作。

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 令牌部分。