配置身份验证设置

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

备注

功能可用性信息如下。

Dynamics 365 Contact Center—嵌入 Dynamics 365 Contact Center—独立 Dynamics 365 Customer Service

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

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

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

  • 聊天
  • Apple Messages for Business

为了指示客户是否已通过身份验证,座席会在“对话摘要 ”部分收到通知 。 “已验证” 字段根据客户的身份验证状态设置为 “是 ”或 “否 ”。 有关详细信息,请参阅 对话摘要

先决条件

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

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

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

  1. 在 Customer Service 管理中心的站点地图中,在客户支持中选择客户设置客户设置页面将显示。

  2. 身份验证设置部分,选择管理身份验证设置页面将显示。

  3. 选择 “新建身份验证设置”,然后在“ 添加身份验证设置 ”页上提供以下信息:

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

    • 所有者: 接受默认值或将其更改为必需值。

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

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

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

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

    在本文后面的“门户 设置 Power Apps ”或 “自定义门户 的设置”部分中 了解有关如何查找公钥 URL 和 JavaScript 客户端函数的更多信息。

  4. 选择保存

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

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

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

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

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

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

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

在门户中的已登录客户打开聊天小组件时,JavaScript 客户端函数会将 JWT 从客户端传送到服务器。 JWT 使用公钥进行解密和验证,然后将信息传递给 Customer Service 全渠道 中的聊天代理。 作为管理员,您还可以通过定义自定义上下文变量传递有关 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 对必须是唯一的。 在步骤 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)。 您的标头类似于以下示例:Your header looks similar to the following example:

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

    b. JWT 有效负载应包括:

    • 至少,以下声明:

      声明 定义
      iss 令牌的发放者。
      iat 发放令牌的日期,数字日期格式。
      exp 此令牌的到期日期,数字日期格式。
      sub 声明的主题。
      注意: 我们建议您在客户服务中为已登录用户传递联系人或客户记录的 GUID。 此 GUID 用于标识联系人记录并将其链接到对话。 记录搜索可识别具有联系人或帐户的活动状态代码的记录。 如果您使用自定义状态代码,则记录标识不起作用。
    • lwicontexts 作为对话的一部分传入的上下文变量,用于传递目的或显示给代理。
      通过此位置了解详细信息
      管理自定义上下文
      setAuthTokenProvider 方法
      使用上下文变量自动标识记录

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

    有效负载应类似于以下示例:Your payload should look similar to the following example:

      { 
          "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 签名应该由您的私钥签署。

    备注

  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 OpenID 连接流程的应用知识。 下一节将概述步骤。

  • 确认您的组织至少有一个 Apple Messages for Business 身份验证类型丰富消息。 设置需要此丰富的消息配置。

使用 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 门户中嵌入聊天小组件
自动识别客户