我的服务模式是什么?
Suite 任意服务模式
Support 任意服务模式
免责声明:本文仅供说明之用。Zendesk 不支持并不保证该代码。如有任何问题,请将其发布在评论部分,或尝试在线搜索解决方案。

您可以使用 JWT(JSON 网络密钥)单点登录对用户进行身份验证。本文章介绍了如何为 Microsoft Active Directory 用户配置 JWT SSO 身份验证。

本文章介绍了以下步骤:  

  • 步骤 1.配置您的 Windows 服务器
  • 步骤 2.配置 Zendesk
  • 步骤 3.下载并配置身份验证脚本
  • 步骤 4.故障排除

步骤 1.配置您的 Windows 服务器

您需要在 Windows 服务器上安装 IIS 和 ASP。您的 IIS 服务器必须在您的域中,并且可以直接访问您的域控制器。IIS 服务器可以位于域控制器上,但这不是必需的。如果使用的是 Windows Server 2008,应设置的用户角色如下:

对于 IIS 用户角色服务,您需要安装以下内容:

  • 应用程序开发
  • ASP.NET
  • ASP
  • 服务器端包含

在安全性下

  • 基本身份验证

正确安装用户角色和服务后,您必须配置 IIS 服务器的身份验证。Zendesk 可以很好地使用基本身份验证,因此我通常将其设置为默认身份验证。确保您禁用匿名身份验证,否则用户将不会得到输入其 Windows 用户名和密码的提示,从而导致登录失败。

步骤 2.配置 Zendesk

有关说明,请参阅文章 “使用 JWT(JSON 网络密钥)设置单点登录”中 的在 Zendesk 中启用 JWT 单点登录 。 对于 远程登录 URL 的 值,指定您将放置 ASP 身份验证脚本的位置,如下一部分所述。

步骤 3.下载并配置身份验证脚本

从此 Github 上的页面下载 ASP 身份验证脚本:

https://github.com/zendesk/zendesk_jwt_sso_examples/tree/master/bun...

将该脚本(及其包含在上述捆绑包中的依赖项)放到您的 www根目录中。您可以创建子目录,但请记住,这只会扩展脚本的 URL。在全新安装期间,IIS 将在以下位置创建此目录:

c:\inetpub\wwwRoot\

对于您的网络浏览器,该文件夹中的文件将显示在此 URL:

http://serveraddress/classic_asp_jwt_with_ad.asp

在记事本或任何其他文本编辑器中打开脚本。需要配置的脚本第一部分如下:

    ' Credentials for a domain user for LDAP access
    sLdapReaderUsername = "domain\username"
    sLdapReaderPassword = "password"

输入您可访问 LDAP 的用户名和密码。

接下来,您需要输入在 JWT Zendesk 配置期间获得的共享密钥(在脚本中标为 sKey)以及 Zendesk 子域名:

' Set your shared secret and Zendesk subdomain
sKey = ""
sSubdomain = ""

以下是对您的用户帐户进行 LDAP 查找的脚本部分:

sQuery = "<LDAP://" & sDomainContainer & ">;(sAMAccountName=" & sUsername & "); adspath," & sFields & ";subtree"
Set userRS = oConn.Execute(sQuery)

查看代码可以发现,我们正在获取用户的广告路径、邮件、displayName 和 sMAccountName。如果您想提取更多数据用于通话,请将其包含在该部分代码中。例如,如果我想包含以下注释块:

我将使用属性“info”更新代码,如下所示:

    sQuery = ";(sAMAccountName=" & strUsername & ");adspath,mail,displayName,sAMAccountName,info;subtree"
    Set userRS = oConn.Execute(sQuery)

查找到属性后,就可以使用它们了。以下代码实际执行属性转换:

    If Not userRS.EOF and not err then
        sFullName = userRS("displayName")
        sEmail = userRS("mail")
        sExternalID = userRS("sAMAccountName")
    if sOrg then
        sOrganization = ""
    end if
        sTags = ""
        sPhotoUrl = ""

您将看到我们已在 displayName、mail 和 sMAccountName 中添加了 。要调用用户的各个属性,可使用“userRS(“nameofattribute”)”对象。例如,如果您包含“info”查找,而我想对标签使用注释块,我会将代码更新为:

    If Not userRS.EOF and not err then
        sFullName = userRS("displayName")
        sEmail = userRS("mail")
        sExternalID = userRS("sAMAccountName")
    if sOrg then
        sOrganization = ""
    end if
        sTags = userRS("info")
        sPhotoUrl = ""

那么有哪些单独的属性可用?您可以在此处查看属性的选项:

http://www.kouti.com/tables/userattributes.htm

此外,如果您在 Active Directory 用户和计算机中启用了“高级功能”,则可以直接更改个人属性。要启用高级功能,请转至查看 > 高级功能:

启用后,如果您前往用户的属性,您将看到一个“属性编辑器”:

关于传递组织和工单标签的注意事项

要成功为用户传递组织,Zendesk 中必须已有组织。如果组织在 Zendesk 中不存在(或名称不是精确匹配),Zendesk 不会像用户那样即时创建组织。您必须先创建相关组织。

要成功传递标签,属性必须如下所示:

“tag1, tag2, tag3”

如果标签之间不加“,”,则会失败。

如需详细了解我们接受的不同字段,请参阅此 帖子。

更改脚本后,保存它。前往您的 Zendesk 站点,单击登录。这样您将重定向到要输入 Windows 凭证的脚本,并返回到 Zendesk 已登录!

步骤 4.故障排除

您单击“登录”但失败了?在脚本中,我们加入了调试选项。如果您在脚本中将调试标志设置为“True”,则在访问脚本时将打印调试信息。 类似:

[DEBUG] ZENDESK\test - should be of the form DOMAIN\username - if blank, your IIS probably allows anonymous access to this file.
[DEBUG] DomainContainer: DC=zendesk,DC=internal
[DEBUG] Attribute name: Test User
[DEBUG] Attribute email: test@zendesk.com
[DEBUG] Attribute jti: 2968942290171.981
[DEBUG] Attribute iat: 1380123848
[DEBUG] Redirecting to https://subdomain.zendesk.com/access/jwt?jwt=eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9.eyJpYXQiOjEzODAxMjM4NDgsImp0aSI6Mjk2ODk0MjI5MDE3MS45ODEsIm5hbWUiOiJUZXN0IFVzZXIiLCJlbWFpbCI6InRlc3RAemVuZGVzay5jb20ifQ.QuRC6Ig7x_nK86Wc38u2viIVjshtTDohcgXTYpmU6VY

您应在这里正确列出了所有信息。如果您配置了组织、工单标签或 PhotoURL,则应看到这些数据。如果您看到的是部分数据,但不是全部,请验证用户的属性数据,并确保代码引用正确的属性。

如果您访问该页面但未获取任何数据,则表示脚本无法连接到您的域控制器或没有权限。通过转到服务器的共享(运行提示符中的 \dcservername\),验证您是否可以访问域控制器。接下来验证您放置在代码中的用户名和密码是否正确。此外,如果您已启用匿名访问,您看到的可能是一张空白页面,因为它从不要求您进行身份验证。确保匿名访问已关闭。

如果您无法访问该页面,且浏览器出错,则问题出在 IIS 中。确认您已在服务器上安装了所需的用户角色/服务,并且它们正在运行。如果仍有问题,请咨询 IIS 管理员,因为此类错误不在本指南的讨论范围内。

如果遇到错误,请告诉我们解决方法。我很乐于更新这篇帖子,提供更多提示,帮助人们解决遇到的问题。

翻译免责声明:本文章使用自动翻译软件翻译,以便您了解基本内容。 我们已采取合理措施提供准确翻译,但不保证翻译准确性

如对翻译准确性有任何疑问,请以文章的英语版本为准。

由 Zendesk 提供技术支持