配置身份验证设置

Customer Service 全渠道提供了一套功能,扩展了 Dynamics 365 Customer Service Enterprise 的能力,使组织能够通过数字消息传递渠道与客户即时联系和互动。 访问 Customer Service 全渠道需要额外的许可证。 有关详细信息,请参见 Dynamics 365 Customer Service 定价概述Dynamics 365 Customer Service 定价计划页面。

您可以创建身份验证设置来验证从域登录的客户,并根据定义的上下文变量提取信息。 您可以将匿名客户与经过身份验证的客户区分开来,并可以根据上下文变量创建规则。

例如,您可以为匿名客户和经过身份验证的客户设置单独的队列。 由于您有有关经过身份验证的客户的更多信息,您还可以根据特定变量设置客户优先级,如购物车值或权限状态。

创建身份验证设置记录后,您必须将其添加到工作流的渠道设置中的渠道实例以使其正常工作。 这些渠道支持身份验证:

  • 聊天
  • Apple Messages for Business

代理将在对话摘要分区获取通知,不论客户是否经过身份验证。 已经过身份验证字段根据客户的身份验证情况设置为。 详细信息:对话摘要

先决条件

  • 确保您的组织具有 OAuth 2.0 和 JSON Web 令牌 (JWT) 的工作知识。
  • 验证您是否对安全列具有权限。 详细信息:配置访问安全列的权限

为聊天创建身份验证设置记录

您可以在管理应用中创建聊天身份验证设置记录。

  1. 转到其中一个管理员应用,执行以下步骤。

    1. 在站点地图中,选择客户支持中的客户设置客户设置页面将显示。
    2. 身份验证设置部分,选择管理

    身份验证设置页面将显示。

  2. 选择新建身份验证设置,在添加身份验证设置页面提供以下信息:

    • 名称:输入身份验证设置的名称。

    • 负责人:接受默认值或更改为所需值。

    • 身份验证类型:默认情况下,是无法编辑的 OAuth 2.0 隐式流。

    • 公钥 URL:指定域的公钥 URL。 此 URL 用于验证来自客户所登录的域的 JavaScript 对象表示 (JSON) Web 令牌 (JWT) 的信息。

    • JavaScript 客户端函数:指定用于身份验证的 JavaScript 客户端函数。 此函数从令牌终结点提取令牌。

      配置聊天身份验证设置记录。

    有关如何查找公钥 URL 和 JavaScript 客户端函数的详细信息,请参阅本文后面的 Power Apps 门户设置自定义门户设置章节。

  3. 选择保存

使用 OAuth 2.0 为聊天创建身份验证设置记录

  1. 执行为聊天创建身份验证设置记录中的步骤 1 到 3,在添加身份验证设置页面输入以下详细信息:

    • 名称:身份验证设置的名称。
    • 渠道类型实时聊天
    • 身份验证类型:OAuth 2.0 隐式流
  2. 选择下一步,然后在详细信息页面上输入以下信息:

    • 令牌自定义操作:用于验证标识提供者提供的令牌并返回经过身份验证的用户的用户 ID 的自定义代码引用。
    • 令牌 URL:将用于交换您向自定义操作传递的令牌授权代码以获取用户 ID 的 URL。
    • 重定向 URL:传递给原始授权代码请求的 URL,它是令牌交换终结点的调用中的必需参数。
    • 客户端 ID:传递给令牌交换终结点的客户端的 ID。
    • 客户端密码:对传递给令牌交换终结点的客户端进行身份验证的机密。
    • 范围:通过在流中获取的令牌向用户授权的范围。
  3. 保存更改。

向聊天小组件添加身份验证

  1. 在 Customer Service 管理中心,在工作流设置中编辑聊天小组件,然后转到行为选项卡。

  2. 身份验证设置框中,浏览并选择聊天身份验证记录。

在门户中的已登录客户打开聊天小组件时,JavaScript 客户端函数会将 JWT 从客户端传送到服务器。 JWT 使用公钥解密和验证,信息随后被传递到全渠道客户服务中的聊天代理。 作为管理员,您还可以通过定义自定义上下文变量传递有关 JWT 中已登录客户的其他信息。 必须准确定义上下文变量,因为它们在与聊天小组件关联的工作流中定义。 详细信息:管理上下文变量

设置 Power Apps 门户

如果您在使用 Power Apps 门户开发的网站上为聊天小组件添加身份验证,公钥 URL 和 JavaScript 客户端函数是现成可用的。 您需要上载自定义证书来在 Power Apps 门户上获取有效的公钥 URL。

  • 公钥 URL<portal_base_URL>/_services/auth/publickey
  • JavaScript 客户端函数auth.getAuthenticationToken

Power Apps 门户将尝试通过其 JavaScript 客户端函数中传递的上下文自动将联系人记录链接到对话。

自定义门户设置

如果您要将经过身份验证的聊天体验添加到不是使用 Power Apps 门户开发的自定义网站,您的 Web 开发团队必须执行以下步骤,管理员才能够配置经过身份验证的聊天:

  1. 在其身份验证服务器中生成公钥/私钥对。 密钥必须使用 RSA256 算法生成。

    这里是生成私钥/公钥对的示例代码。

    openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048
    openssl rsa -pubout -in private_key.pem -out public_key.pem
    
  2. 创建将返回您的公钥的终结点。 全渠道服务器将使用公钥验证作为授权聊天请求的一部分传递的 JWT 令牌。 在创建身份验证设置记录时,将在管理应用中输入此终结点的 URL。

    公钥终结点看上去类似于此示例:

      -----BEGIN PUBLIC KEY----- 
      NIIBIjANBgkqhkiG9w0BAQEFABCOPQ8AMIIBCgKCAQEAn+BjbrY5yhSpLjcV3seP 
      mNvAvtQ/zLwkjCbpc8c0xVUOzEdH8tq4fPi/X5P/Uf2CJomWjdOf1wffmOZjFasx 
      ELG+poTqy5uX2dNhH6lOMUsV31QGG36skLivpLBCSK6lWlzsV6WGkb/m8r86aGzp 
      jtNhw8yvoTYB4updDrJ8pC+tx4EWK0WEmKn1GsW6TjUtxJjcTLI1puSbmcGHbkSi 
      RSbWkKPqaEVFALprw+W5ZCung5QX3KOkY/rJd+2JwULm7okyQCQaF7qwa5i9Uf65 
      7M6ZL4vsDevq7E/v3tf6qxpSSHzt4XspXVQty9QHhqDqBEY3PfI4L2JjgIGuPhfS 
      YQIDAQAB 
      -----END PUBLIC KEY-----   
    
    

如果您需要使用多个公钥,您的公钥终结点可以返回一组 <kid, publickey> 对,其中 kid 是指密钥 ID。 密钥 ID 对必须是唯一的。 此密钥 ID 将需要在第 4 步中传入 JWT 令牌。 如果您使用多个密钥,您的公钥终结点应会返回与下面类似的内容。 公钥采用 Base64 编码。

 [
      { 
          "kid": "qWO4EaKT1xRO7JC/oqALz6DCVr41B/qL0Hqp4in7hu4=",
          "publicKey": LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0NCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBbjFLdXhtSEh3V3hjelZSWGRBVmMNCnBEaFZwa0FnYklhTGZBUWc1bFpvemZqc29vcWRGWkl0VlFMdmRERWFVeDNqTytrTkxZM0JFRnBYVDZTN3ZNZCsNCnZoM2hpMDNsQ1dINnNCTWtaSWtuUUliMnFpekFsT0diU2EvK3JrUElnYnpXQjRpT1QyWVhyOVB4bXR5d2o4WUINCnYram55VU5DSzMyZy9FYWsvM0k3YW1vZ2pJY0JISjNFTjVuQWJBMExVVnJwMW5DODJmeEVPOHNJTzNYdjlWNVUNCnc5QnVTVVFRSmtMejNQYVI5WTdRZUEyNW5LUGtqTXZ2Y0UxVU5oeVpIYlNLbmorSitkZmFjb1hsSGtyMEdGTXYNCldkSDZqR0pWcGNQMHBkNjFOa3JKa2c0aStheThwS2ZqdjNUOHN3NWdaVHFweFFaaitVRWxqaVM0SHRPTlhkNlENCnZRSURBUUFCDQotLS0tLUVORCBQVUJMSUMgS0VZLS0tLS0NCg==",
          "expiry": 1608495423
      },
 {
          "kid": "qWO4EaKT1xRO7JC/oqALz6DCVr41B/qL0Hqp__valid=",
          "publicKey": "LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0NCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBbjFLdXhtSEh3V3hjelZSWGRBVmMNCnBEaFZwa0FnYklhTGZBUWc1bFpvemZqc29vcWRGWkl0VlFMdmRERWFVeDNqTytrTkxZM0JFRnBYVDZTN3ZNZCsNCnZoM2hpMDNsQ1dINnNCTWtaSWtuUUliMnFpekFsT0diU2EvK3JrUElnYnpXQjRpT1QyWVhyOVB4bXR5d2o4WUINCnYram55VU5DSzMyZy9FYWsvM0k3YW1vZ2pJY0JISjNFTjVuQWJBMExVVnJwMW5DODJmeEVPOHNJTzNYdjlWNVUNCnc5QnVTVVFRSmtMejNQYVI5WTdRZUEyNW5LUGtqTXZ2Y0UxVU5oeVpIYlNLbmorSitkZmFjb1hsSGtyMEdGTXYNCldkSDZqR0pWcGNQMHBkNjFOa3JKa2c0aStheThwS2ZqdjNUOHN3NWdaVHFweFFaaitVRWxqaVM0SHRPTlhkNlENCnZRSURBUUFCDQotLS0tLUVORCBQVUJMSUMgS0VZLS0tLS0NCg==",
          "expiry": 1608495423
      } 
 ]
  1. 您需要一个服务来生成 JWT 并在开始经过身份验证用户的聊天过程中发送到全渠道服务器。

    a. JWT 标头看起来类似于以下示例。

    { 
      "alg": "RS256", 
      "typ": "JWT", 
    } 
    

    如果您使用多个公钥,则需要传入密钥 ID (kid)。 标头看起来类似于此示例:

    { 
      "alg": "RS256", 
      "typ": "JWT",
      "kid": "qWO4EaKT1xRO7JC/oqALz6DCVr41B/qL0Hqp4in7hu4="
    } 
    

    b. JWT 有效负载应包括:

    • 至少包括以下声明:

      声明 定义
      iss 令牌的发放者。
      iat 发放令牌的日期,数字日期格式。
      exp 此令牌的到期日期,数字日期格式。
      sub 声明的主题。
      注意:我们建议您为登录用户在 Customer Service 中传递联系人或客户记录的 GUID。 此 GUID 将用于标识联系人记录并将其链接到对话。
    • lwicontexts 作为对话的一部分传入的上下文变量,用于传递目的或显示给代理。
      更多信息:
      管理自定义上下文
      setAuthTokenProvider 方法
      使用上下文变量自动标识记录

    • 您要传递的任何其他数据。

    有效负载看起来类似于此示例:

      { 
          "sub" : "87b4d06c-abc2-e811-a9b0-000d3a10e09e",  
          "lwicontexts" :"{\"msdyn_cartvalue\":\"10000\", \"msdyn_isvip\":\"false\", \"portalcontactid\":\"87b4d06c-abc2-e811-a9b0-000d3a10e09e\"}", 
          "iat" : 1542622071, 
          "iss" : "contosohelp.com", 
          "exp" : 1542625672, 
          "nbf" : 1542622072 
      } 
    

    c. JWT 签名应该由您的私钥签署。

    备注

    • 如果令牌已过期或无效,聊天小组件会引发错误事件。
    • 未经过身份验证的聊天不支持 setContextProvider 方法。 您应该作为 JWT 有效负载的一部分传入您的 lwicontext。
  2. 在您的网站上创建一个 JavaScript 函数,用于接受回调函数并将 JWT 返回到回调函数。 为了避免超时,此 JavaScript 函数应在 10 秒内返回 JWT。 此 JWT 必须:

    • 包含步骤 3 中的标头、有效负载和签名。

    • 由步骤 1 中密钥对中的私钥签名。

      (我们建议在 Web 服务器上生成 JWT)。

      此 JavaScript 方法的名称将用于在全渠道管理应用中创建身份验证设置记录。

      // This is a sample JavaScript client function  
      
      auth.getAuthenticationToken = function(callback){ 
      
        var xhttp = new XMLHttpRequest(); 
        xhttp.onreadystatechange = function() { 
            if (this.readyState == 4 && this.status == 200) { 
                callback(xhttp.responseText); 
            } 
        }; 
        xhttp.onerror = function(error) { 
            callback(null); 
        }; 
      //Replace this with a call to your token generating service 
        xhttp.open("GET", "https://contosohelp.com/token", true); 
        xhttp.send(); 
      } 
      
  3. 您的开发人员需要与您的全渠道管理员共享下列信息:

    a. 步骤 2 中公钥服务的 URL。

    示例: https://www.contoso.com/auth/publickey

    b. 步骤 4 中 JavaScript 客户端函数的名称。 实时聊天小组件将在聊天开始过程中在内部调用此名称。

    示例:auth.getAuthenticationToken

    备注

    如果在对用户进行身份验证之前,您的用户体验会显示聊天按钮,请确保根据需要将用户重定向到身份验证页。 这可以在步骤 4 中的方法中或作为用户流的早期步骤进行。

    下图介绍了设置。

    经过身份验证的聊天设置。

    然后,您可以按照以下步骤设置经过身份验证的聊天:

设置经过身份验证的聊天

  1. 转到管理应用,使用上一部分的步骤 5 中的信息创建身份验证设置记录。 详细信息:创建聊天身份验证设置记录

  2. 将身份验证设置与聊天小组件关联将提供经过身份验证的体验。 详细信息:向聊天小组件添加身份验证

    下图介绍了用户在经过身份验证的设置中访问您的聊天时的调用序列。

    经过身份验证的聊天运行时。

为 Apple Messages for Business 创建身份验证设置

先决条件

  • 配置身份验证设置的管理员将需要更多的安全权限。 详细信息:设置字段安全权限

  • 确保贵组织具有 OAuth 2.0 代码流或 OAuth 2.0 OpenID Connect 流的工作知识。 以下各节概述了这两种类型的步骤。

  • 确认您的组织至少有一个 Apple Messages for Business 身份验证类型丰富消息。 安装时需要此内容丰富的消息。

使用 OAuth 2.0 代码流为 Apple Messages for Business 创建身份验证设置记录

  1. 在 Customer Service 管理中心或全渠道管理中心应用站点地图中,选择客户设置,然后选择对身份验证设置进行管理。 现有的身份验证设置的列表将显示。

  2. 选择新的身份验证设置,在添加身份验证设置页上,提供以下详细信息:

    1. 渠道类型页面上,输入名称,选择 Apple Messages for Business 作为渠道类型。
      默认情况下,身份验证类型为 OAuth 2.0 代码流

    2. 添加身份验证设置页上,提供以下信息:

      • 客户端 ID:授权服务器发放的 OAuth 2.0 客户端标识符。
      • 客户端密码:用于验证发送到授权服务器的请求的客户端密码。
      • 范围:添加的每个范围将指定您向客户请求的用户数据。 范围内容必须与通过服务提供商提供的内容完全匹配。
      • 访问令牌 URL:可在其中请求访问令牌的服务提供商终结点。
      • 解密的令牌 URL:OAuth 2.0 API 可以检索范围内请求的客户信息的终结点。
    3. 其他详细信息页面上,您可以选择定义访问令牌过期时间(以秒为单位)。 默认过期时间为一小时。
      指定时间过后,先前经过身份验证的会话的可用对话部分中的已经过身份验证字段将更改为

    4. 丰富消息页面上,选择添加,然后选择一条或多条丰富消息来与此身份验证设置关联。

    5. 查看摘要页,然后选择完成。 身份验证设置已配置。

使用 OAuth 2.0 OpenID Connect 流为 Apple Messages for Business 创建身份验证设置记录

  1. 在 Customer Service 管理中心或全渠道管理中心站点地图中,选择客户设置,然后选择管理身份验证设置。 现有的身份验证设置的列表将显示。

  2. 选择新的身份验证设置,在添加身份验证设置页上,提供以下详细信息:

    1. 渠道类型页面上,输入名称,选择 Apple Messages for Business 作为渠道类型。

    2. 更改身份验证类型 OAuth 2.0 OpenID Connect 流

    3. 添加身份验证设置页上,提供以下信息:

      • 客户端 ID:授权服务器发放的 OAuth 2.0 客户端标识符。
      • 客户端密码:用于验证发送到授权服务器的请求的客户端密码。
      • 范围:添加的每个范围将指定您向客户请求的用户数据。 范围内容必须与通过服务提供商提供的内容完全匹配。
      • 访问令牌 URL:可在其中请求访问令牌的服务提供商终结点。
      • 解密的令牌 URL:OAuth 2.0 API 可以检索范围内请求的客户信息的终结点。
      • 其他参数:允许身份验证服务通过请求获得额外的参数。
    4. 其他详细信息页面上,您可以选择定义访问令牌过期时间(以秒为单位)。 默认过期时间为一小时。
      在指定时间之后,之前已通过身份验证的对话的客户摘要部分的已经过身份验证字段将变为

    5. 丰富消息页面上,选择添加,然后选择一条或多条丰富消息来与此身份验证设置关联。

    6. 查看摘要页面,然后选择下一步。 身份验证设置已配置。

    7. 重定向信息页上,复制 URL。 您将在允许的回拨 URL 下将此 URL 添加到身份验证服务提供商的网站。

    8. 选择完成

向 Apple Messages for Business 渠道添加身份验证

  1. 打开包含您要向其添加身份验证的渠道实例的工作流。

  2. 在渠道设置的行为页面上,导航到身份验证设置,启用该功能,然后从下拉菜单中选择正确的设置。 详细信息:配置 Apple Messages for Business 渠道

  3. 选择编辑查看或更新每个渠道实例的身份验证设置。

另请参见

添加聊天小组件
配置对话前调查
创建快速回复
创建和管理工作时间
在 Power Apps 门户中嵌入聊天小组件
自动识别客户