SAML 身份验证

安全断言标记语言(SAML) 为在线服务中现有的传统登录方法提供了一种更简便的替代方案。用户将不再需要为其访问的每项服务提供特定密码。ServiceDesk Plus application支持 SAML 2.0,可通过 管理 > 用户和权限 > SAML 单点登录进行配置。

所需角色:SDAdmin

 

SAML 如何工作

SAML 在两个实体之间交换身份验证和授权数据,即 身份提供商(IdP)和 服务提供商(SP)。此处 ServiceDesk Plus 作为 SP,在集成后,用户可直接从 IdP 登录到 application,而无需提供任何登录凭据。 

 

例如,您可以将 Active Directory Federation Service (ADFS) 设置为 IdP,以允许用户使用其 Active Directory 凭据登录 ServiceDesk Plus。

以下屏幕截图显示了用户如何登录到已配置 SAML 的 application。

 

 

在 ServiceDesk Plus 中配置 SAML

  • 转到 管理 > 用户和权限 > 单点登录 > SAML SSO

  • 配置 选项卡下,启用 SAML 单点登录

  • SAML 配置页面包含三个部分:服务提供商详细信息、身份提供商详细信息以及附加声明。

 

 

  • 您可以使用服务提供商详细信息,将 ServiceDesk Plus 配置为与您的 IdP 配合使用的 SP。

我们已使用 ADFSOktaOneLogin、 AzureGoogle Workspace 作为 IdP 对 SAML 2.0 进行了测试。对于 ICAM,还需要进行一些额外配置,可在此处查看。
  • 服务提供商详细信息

 

字段名称

说明

实体 ID

 

使用这些详细信息在您的 IdP 中将 ServiceDesk Plus 配置为服务提供商。

断言使用者 URL

单点注销服务 URL

SP 证书文件

单击该文件即可下载。请在 IdP 门户中上传此文件。

SP 元数据文件

在某些 IdP 中,仅上传元数据文件就足以将 ServiceDesk Plus 配置为 SP。

 

在“高级门户设置”中更改别名 URL,以及将服务从 http 更改为 https,都会反映到断言使用者 URL 和单点注销服务 URL 中。您需要通过重新生成 SP 证书,在 SP 和 IdP 门户中重新配置 SAML 身份验证。
SAML SSO 允许用户在备用 ACS URL字段中配置内部和外部 URL。
这些 URL 可通过单点登录 > SAML SSO下“断言使用者 URL”字段旁边的“添加 URL”图标进行添加。
  • 在您的 IdP 中将 ServiceDesk Plus 配置为 SP 后,请返回 ServiceDesk Plus 中的 SAML 配置页面,并按如下所述配置身份提供商详细信息和其他声明。

  • 身份提供商详细信息

 

字段名称

说明

登录 URL*

输入 IdP 的登录 URL。

注销 URL

输入 IdP 的注销 URL。如果不需要单点注销(SLO),则可跳过此字段。

Name ID 格式*

根据您的登录偏好选择 Name ID 格式。

  • Transient 或 Persistent - 用于使用用户名登录。请确保所选格式与您的 IdP 中的配置一致。

  • 电子邮件地址 - 用于使用您的电子邮件地址登录。

  • Unspecified - 用于使用活动目录帐户中配置的用户主体名称(UPN)登录。

算法*

从下拉列表中选择算法。该算法应与 IdP 中配置的算法相同。

证书

单击“选择文件”以上传 IdP 证书。

* 必填字段

 

  • 附加声明

附加属性可让您为通过 SAML 登录的动态用户创建详细的用户配置文件。如果启用了动态添加用户,您可以从 IdP 导入附加属性。

导入附加属性

  • 通过启用字段旁边的复选框,选择这些字段(默认字段和用户定义字段)。

  • 在所选字段中指定 IdP 中配置的属性名称。 这些详细信息不会用于更新现有用户配置文件。

  • 最后,单击保存

 

 

历史记录选项卡列出了在配置选项卡下执行的所有活动。您可以使用预定义筛选器查看与特定属性相关的活动。

 

 

使用 SAML 登录 ServiceDesk Plus

启用 SAML 单点登录后的登录页面将如下所示。

 

 

用户可以使用本地身份验证(默认启用)登录,也可以单击“登录”按钮下方的链接使用 SAML 登录。 

如果禁用了本地身份验证,系统将显示 IdP 登录页面。

当 IdP 生成的登录名与 ServiceDesk Plus 中某位用户的登录名不匹配时,

  • 如果启用了动态用户添加,则系统会使用 IdP 生成的登录名重新添加该用户,并将密码设置为 Active Directory/LDAP 设置中配置的密码。  

  • 如果禁用了动态用户添加,则该用户将无法登录 ServiceDesk Plus。

使用 SAML 注销

ServiceDesk Plus 支持 SAML 单点注销服务。借助此功能,您可以选择仅从 ServiceDesk Plus 注销,或从与 IdP 集成的所有服务中注销。 

  • 单击 。 

  • 如果您已在 IdP 域中配置 SAML 注销,您将看到列出的两个选项。 

  • 单击 注销可仅注销 ServiceDesk Plus application。 

  • 如果您单击 退出 SAML, 您将退出与该 IdP 集成的所有服务。

 

 

故障排除

 

错误代码

原因

解决方案

4

IdP 证书文件上传不正确。 

重新配置 IdP 详细信息。

8 未收到来自 IdP 的 SAML 响应。 ServiceDesk Plus 仅支持 POST 绑定方法。请确保 IdP 使用 POST 绑定方法。

10

验证 IdP 的注销响应时出错。

请参阅错误 42、44、50、4 和 36。 联系 servicedeskplus-support@manageengine.com

21、22、23

IdP 响应状态为失败。

按照此处提供的说明重新配置 IdP 详细信息。

35

IdP 响应未签名。ServiceDesk Plus 仅接受已签名的响应。

为 ServiceDesk Plus 配置 IdP 设置,以对断言和响应进行签名。

36

无法验证 SAML 响应中的 IdP 签名。

在 ServiceDesk Plus 的 SAML 配置页面中上传正确的 IdP 证书文件。

38

SAML 响应不包含有效的 NameID格式,或者该响应已加密。

不支持加密的 SAML 响应。

请确保 SAMLResponse 包含以下受支持的 NameID 格式之一:

  • urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified

  • urn:oasis:names:tc:SAML:2.0:nameid-format:transient

  • urn:oasis:names:tc:SAML:2.0:nameid-format:persistent

  • urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress

40

SAML 响应中的实体 ID 与 ServiceDesk Plus 中的实体 ID 不一致。

在您的 IdP 门户中重新配置 SP 详细信息。

42

SAML 响应中的目标 URL 与实际调用该响应的 URL 不匹配。

请在您的 IdP 门户中重新配置 SP 详细信息。

 

如果您已配置代理服务器(例如 Azure App Proxy)来将 application 对外发布,请在 server.xml 文件中的 connector 标签中添加 proxyName="<external_url>"proxyPort="<external_port>" 属性。

 

proxyName 不应包含协议(http:// 或 https://)或末尾的斜杠(/)。 例如:如果外部 URL 为 https://zylker.com,则 proxyName 应为 zylker.com

44

SAML 响应中的 Issuer 字段为空。

请联系 servicedeskplus-support@manageengine.com.

46, 47, 51

由于系统时间戳与标准时间不匹配,SAML 响应将无法通过验证。

请在 application 服务器上设置正确的时间和时区。

48

用户已配置 Assertion Encryption,但 ServiceDesk Plus 不支持此功能。

请在 IdP 中将 Assertion Encryption 更改为 Assertion Sign,这样会对断言进行签名,但不会加密。

49

SAML 断言中缺少 Issuer 名称。

请重新配置 SP 和 IdP。 

 

如果问题仍然存在,请将日志文件通过电子邮件发送至 servicedeskplus-support@manageengine.com

50

来自 IdP 的 SAML 断言不适用于目标用户/请求者。

使用 SAML 身份验证重新登录。

52 (在 ServiceDesk Plus 中)

SAML 响应未映射到正确的用户,且在自助服务门户设置中已禁用动态添加用户。

 

如果该用户在 ServiceDesk Plus 中不存在,请使用 IdP 生成的登录名手动创建新用户。

如果该用户已存在于application中,请在 IdP 门户中更改 Name ID 属性,使其与 ServiceDesk Plus 中的登录名匹配。

 

52(在 Asset Explorer 中)

application中不存在该用户,或者该用户不是技术人员。

使用 IdP 生成的登录名手动创建新的技术人员,或将请求者更改为技术人员。

53 创建用户账户时发生异常。 携带日志文件联系 servicedeskplus-support@manageengine.com。
54 超过最大长度 删除未使用的附加属性,将字符数减少到 50000 以下。
60 未找到用户(在基于电子邮件的 SAML 登录期间)。

如果该用户在 ServiceDesk Plus 中不存在且已禁用动态添加用户,请手动创建新用户并配置电子邮件地址。如果启用了动态添加用户,则会自动添加新用户。

如果该用户已存在于application中,请将其电子邮件地址配置为与 ServiceDesk Plus 中的登录电子邮件 ID 匹配。

61

已为该用户禁用登录。

为该用户启用登录。

62

配置了多个用户使用该登录邮箱 ID。

请确保该登录邮箱地址只配置给一个用户。如果该登录邮箱 ID 被配置为其他用户的主/辅助邮箱地址,则会抛出此错误。

 

常见问题:

1. 尽管我拥有有效的登录凭据,为什么在使用 SAML 登录时,我仍会在 ServiceDesk Plus 中被添加为新用户?

当您使用 SAML 登录时,IdP 会在 SAML 响应中提供一个登录名。该登录名是根据 IdP 中配置的 NameID 属性生成的。application不会将其与您的凭据进行匹配,因为您在 ServiceDesk Plus 中的登录名与 SAML 响应中的登录名并不相同。现在有两种可能:

  • 如果启用了动态添加用户,您将以 IdP 生成的登录名被添加为新用户,密码则为 Active Directory/LDAP 设置中配置的密码。

  • 如果禁用了动态添加用户,则会显示错误消息,并且您将无法登录到 ServiceDesk Plus。

要解决此问题,请通过选择正确的 NameID 属性重新配置您的 IdP 设置。

 

2. 为什么在将我的 IdP 配置为返回正确的登录名后,我仍然会被添加为单独的用户?

如果该用户属于某个域,则 IdP 应在返回登录名的同时返回该用户的域名。

例如,如果 Peter 是 Zylker 域中的技术人员,登录名为 peter,那么 IdP 应返回 Zylker\peter 作为登录名。

如果上述情况失败,则会创建一个新用户。

 

请选择合适的 NameID 属性并重新配置 IdP 以解决此问题。

 

3. 启用 SAML 后,如何修复如下图所示登录页面中的对齐问题?

 

  • 转到 管理 >> 自助服务门户设置。  

  • 单击“登录页面自定义”下方的“立即自定义”。

 

在 HTML 编辑器中,添加截图中所示的类。这些类也可在 <server_home>\custom\login\default.html 中找到

 

 .sign-line{  

  text-align: center; 

  display: block; 

  border-bottom: 1px solid #ccc; 

  margin:10px 0; 

 } 

 .or-ctr{ 

  background: #fff; 

  position: relative; 

  top: 8px; 

  padding: 0 4px; 

  font-size: 12px; 

  color: #727272; 

 } 

 .sign-saml{ 

  color: #009adb; 

  text-decoration: none; 

 } 

 

 

  • 单击“保存”,并检查链接现在是否已对齐显示。