您可以使用 JWT(JSON 网络密钥)单点登录对用户进行身份验证。本文章介绍了如何为 Microsoft Active Directory 用户配置 JWT SSO 身份验证。
本文章介绍了以下步骤:
步骤 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 管理员,因为此类错误不在本指南的讨论范围内。
如果遇到错误,请告诉我们解决方法。我很乐于更新这篇帖子,提供更多提示,帮助人们解决遇到的问题。
翻译免责声明:本文章使用自动翻译软件翻译,以便您了解基本内容。 我们已采取合理措施提供准确翻译,但不保证翻译准确性
如对翻译准确性有任何疑问,请以文章的英语版本为准。
0 条评论