OAuth身份验证

您可以使用OAuth2来验证所有到Zendesk Chat的API请求。亚博OAuth为您的应用程序提供了一种安全的方式来访问您的帐户数据,而不需要将用户名和密码等敏感信息随请求一起发送。

如果您在Zendesk支持中创建了Zen亚博desk聊天帐户,则必须使用OAuth访问令牌对API请求进行身份验证。

如果你有一个不是在Zendesk Support中创建的只能聊天的帐户,你可以使用OAuth身份验证,但这不是亚博必需的。看到安全与认证在介绍部分。

要使用OAuth身份验证,您需要通过添加API客户端向Zendesk Chat注册应用程序。亚博您还需要向应用程序添加一些功能来实现OAuth授权流。

主题:

添加API客户端

您必须在Zendesk Chat中添加API客户端来为您的应亚博用程序生成OAuth凭据。根据OAuth流程,客户端可能无法访问所有Zendesk Chat帐户。亚博

本节介绍如何在Zendesk Chat中使用仪表板添加API客户端。亚博您还可以使用API以编程方式添加和管理API客户机。看到OAuth客户

添加客户端

  1. 以管理员身份登录Zendesk Chat。亚博

  2. 在“仪表板”中,转到设置>账户,然后选择API选项卡。

  3. 点击添加API客户端

  4. 请填写以下字段:

  • 客户端名称-你客户的名字。这是用户在被要求授予对应用程序的访问权限时将看到的名称
  • 公司-这是用户在请求授予对应用程序的访问权限时将看到的公司名称。这些信息可以帮助他们了解他们授权访问的对象。
  • 重定向url-输入Zendesk Chat在用户决定是否授权您的应用程亚博序访问Zendesk Chat后用于重定向用户的URL或URL。url必须是绝对的而不是相对的,https本地主机
  1. 点击创建API客户端

    如果成功创建客户端,将出现一个对话框,其中列出客户端ID和客户端秘密。稍后您将需要两者来创建OAuth访问令牌。

  2. 将客户端秘密保存在安全的地方。

    出于安全原因,整个字符串只显示一次。关闭对话框后,您将只能看到前几个字符。

在应用程序中使用客户端id(也称为唯一标识符)和客户端秘密,如下部分所述。

实现OAuth授权流

亚博Zendesk Chat支持多个OAuth流。第一个流程是授权代码授予流程,在用户授予应用程序对其帐户的访问权限后,会生成一个授权代码。然后,您的应用程序可以将授权代码交换为API请求中使用的访问令牌。

隐式拨款流类似于授权代码授予流程,除了您的应用程序不需要获取和交换访问令牌的授权代码。如果用户授予访问权限,则立即返回令牌。

其他选项如下保密资助类型不需要与终端用户交互的:

  • 密码授予类型
  • 客户端凭证类型

刷新令牌仅为授权代码授予和密码授予流发出。

授权代码授予流程

此流称为授权代码授予流,因为在请求访问令牌之前必须获得授权代码。

要实现授权代码授予流,您需要向应用程序添加以下功能:

  • 步骤1 -将用户发送到Zendesk聊天授权页面亚博
  • 步骤2 -处理用户的授权决策
  • 步骤3 -从Zendesk Chat获取访问令牌亚博
  • 步骤4 -在API调用中使用访问令牌
步骤1 -将用户发送到Zendesk聊天授权页面亚博

首先,您的应用程序必须将用户发送到Zendesk聊天授权页面。亚博该页面要求用户授权您的应用程序访问Zendesk Chat,就像它是他们一样。亚博用户做出选择后,Zendesk Chat会将选择和其他一些信息亚博发送回你的应用程序。

将用户发送到Zendesk Chat授权页面亚博

在应用程序中添加一个链接或按钮,将用户发送到以下URL:

             
https//wwwzopimcom/oauth2/授权/

请求应该是GET,带有以下参数(确保对参数进行了url编码):

  • response_type——需要。亚博Zendesk Chat在响应中返回一个授权代码,因此将code指定为响应类型。例子:response_type =代码

  • redirect_uri——需要。在用户决定是否授权您的应用亚博程序访问Zendesk Chat后,Zendesk Chat应用于重定向用户的URL。URL必须是绝对的而不是相对的。它还必须是安全的(https),除非你正在使用本地主机.这个URI应该是您在客户端注册期间提供的URI之一

  • client_id——需要。在Zendesk Chat中注册应用程序时获得的唯一标识符。亚博请参阅上面的部分。

  • 范围——需要。用空格分隔的作用域列表,用于控制对oauth端点的访问。支持以下范围:,闲谈,聊天.例子:=读% 20写范围

    • scope允许访问用于显示和索引的api
    • scope允许访问用于创建、更新和删除的api
    • 闲谈,聊天范围提供对聊天对话API
  • 状态-在用户决定是否授予访问权限后,Zendesk Chat响应中包含的任意字符串。亚博可以通过该参数防止CSRF (cross-site request forgery)攻击。在CSRF攻击中,最终用户被欺骗点击一个在web应用程序中执行操作的链接,最终用户仍然经过身份验证。

为了防止这种攻击,可以向state参数添加一些值,并在它返回时对其进行验证。

  • 子域名—Z亚博endesk支持子域。如果您的用户从Zendesk Support子域(如.zendesk.com/cha亚博t)访问聊天,则需要。该值用于登录用户。
步骤2 -处理用户的授权决策

你的应用程序必须处理来自Zendesk Chat的响应,告诉它用户的决定。亚博该信息包含在注册应用程序时指定的重定向URL中的URL参数中。

如果用户决定授权应用程序,则URL包含一个授权代码。例子:

             
redirect_url?代码7xqwtlf3rrdj8uyeb1yf

授权码的有效时间较短。

如果用户决定不授权应用程序,则URL包含错误参数,该参数通知您用户拒绝访问应用程序。

             
redirect_url?错误access_denied

使用这些值来控制应用程序的流程。如果URL包含代码参数,请从Zendesk Chat获取访问令牌,如下节所述。亚博这是在Zendesk Chat API调用中包含的令牌。亚博

步骤3 -从Zendesk Chat获取访问令牌亚博

如果您的应用程序接收到来自Zendesk Chat的授权代码以响应授予访问权限的用户,您的应用程序可以调用Zen亚博desk Chat来获得访问令牌。要获得访问令牌,向以下端点发出POST请求:

             
https//wwwzopimcom/oauth2/令牌

在请求中包括以下必需的参数:

  • grant_type——指定authorization_code作为值。
  • 代码-使用用户授予访问权限后从Zendesk Chat接收到的授权代码。亚博
  • client_id-使用您在Zendesk Chat注册应用程序时收到的唯一标识符。亚博
  • client_secret-使用您在Zendesk Chat注册应用程序时收到的秘密值。亚博
  • redirect_uri- Zendesk Chat发送访问令牌的资源URL。亚博它也应该是在客户端注册期间指定的uri之一。
  • 范围——指定作为值。

请求必须结束https参数必须是url编码的

使用旋度

             
旋度https://www.zopim.com/oauth2/token- h“内容类型:应用程序/ x-www-form-urlencoded”- d“grant_type = authorization_code&code = {your_code} client_id = {your_client_id}client_secret = {your_client_secret} &redirect_uri = {your_redirect_uri}范围=读% 20写'- x的帖子

示例响应

             
Http /1.1 200 ok内容类型:application / json:“access_token gErypPlm4dOVgGRvA1ZzMH5MQ3nLo8bo”,:“refresh_token x4AoIVTmaoZmpl25ZX6vTPL2f0aZXHbn”,“token_type”:“持票人”,“范围”:“读”
步骤4 -在API调用中使用访问令牌

进行API调用需要访问令牌。在请求的授权头中设置令牌如下:

授权:承载{a_valid_access_token}

例如,一个curl请求显示您的帐户详细信息将如下所示:

             
旋度https://www.zopim.com/api/v2/account- h“授权:持有人gErypPlm4dOVgGRvA1ZzMH5MQ3nLo8bo”

隐式拨款流

隐式授权流类似于授权代码授权流,只是没有步骤3。您请求一个令牌而不是授权代码。换句话说,你设置了response_type参数改为“token”而不是“code”。如果最终用户授权访问,令牌将立即在重定向URL中发送。隐式授权流适用于没有服务器端组件的基于浏览器的JavaScript应用程序。由于所有应用程序的源代码都加载在浏览器中,所以客户端机密不能保密,也不会被使用。

示例请求

要将用户发送到Zendesk聊天授权页面,请执行亚博步骤1授权代码授予流程,用小零钱换到response_type参数。亚博Zendesk Chat直接在响应中返回一个令牌,因此指定“token”作为响应类型

             
https//wwwzopimcom/oauth2/授权/?response_type令牌client_idyour_unique_identifier范围redirect_urihttp3.一个2F2Flocalhost2Ftoken

示例响应

如果用户授予对应用程序的访问权限,则令牌将包含在重定向URL中。

             
redirect_url# access_tokengErypPlm4dOVgGRvA1ZzMH5MQ3nLo8botoken_type持票人范围

如果请求格式不正确、无效或用户决定不授予对应用程序的访问权限,则URL包含错误而且error_description参数。

             
redirect_url#错误access_deniederror_description+结束-用户++授权+服务器+否认++请求

保密资助类型

聊天API支持以下机密授权类型:

  • 密码授予类型
  • 客户端凭证类型

您只能将这些授予类型与聊天OAuth客户端它的client_type属性设置为“confidential”。的“client_type”:“机密”设置启用对机密授予类型的支持。该设置没有其他副作用。例如,您仍然可以将客户端与其他授权流一起使用。

方法只能将client_type设置为“confidential”更新客户端这个API中的端点。没有更改设置的UI选项。如果通过用户界面重新保存OAuth客户端,该设置将恢复为“public”。

如果您的web应用程序是高度安全的,并且可以安全地获得所需的凭据,而不会在客户端暴露它们或以任何其他方式损害它们,则只使用机密授予类型。机密授权类型不应用于移动应用程序或客户端浏览器应用程序。

访问令牌的HTTP请求不需要授权标头。身份验证和授权凭据在请求正文中传递——用户名和密码用于授予密码,或者client_id和client_secret用于授予客户端凭据。

看到OAuth 2.0授权框架RFC 6749有关机密和公共OAuth客户机概念的详细信息。

密码授予类型

使用密码授予类型交换Zendesk聊天用户名和密码为访问令牌。亚博

此授权类型仅支持聊天帐户。聊天+支持账户不支持。看到关于聊天账号类型在聊天帮助中心。

使用旋度

             
旋度https://www.zopim.com/oauth2/token- h“内容类型:应用程序/ x-www-form-urlencoded”- d“grant_type =密码和用户名= {zendesk_c亚博hat_username}密码= {zendesk_chat_password} client_id = {your_client_id} client_secret = {your_client_secret} '- x的帖子

示例响应

             
Http /1.1 200 ok内容类型:application / json:“access_token gErypPlm4dOVgGRvA1ZzMH5MQ3nLo8bo”,:“refresh_token x4AoIVTmaoZmpl25ZX6vTPL2f0aZXHbn”,“token_type”:“持票人”,“范围”:“读”
客户端凭据授予类型

仅建议应用程序访问自己的资源时使用此授权类型。亚博电脑端您可以使用它来将OAuth客户机的id和秘密交换为访问令牌。

使用此授权类型的访问令牌执行的操作由创建OAuth客户机的管理员执行并记录。

使用旋度

             
旋度https://www.zopim.com/oauth2/token- h“内容类型:应用程序/ x-www-form-urlencoded”- d“grant_type = client_credentials&client_id = {your_client_id} client_secret = {your_client_secret} '- x的帖子

示例响应

             
Http /1.1 200 ok内容类型:application / json:“access_token gErypPlm4dOVgGRvA1ZzMH5MQ3nLo8bo”,“token_type”:“持票人”,“范围”:“读”