用于单点登录的 OAuth 身份验证

OAuth 是一种标准授权协议,它使用 Web 令牌而不是密码来访问受保护资源。借助 OAuth,资源所有者可以为每个请求访问同一资源的客户端配置单独的权限,并可在任何时间修改/撤销访问权限。

OAuth 如何工作     

术语

  • 资源所有者:拥有受保护资源的用户。
  • 客户端:代表用户请求访问受保护资源的应用程序或服务。
  • 授权服务器:为客户端生成访问令牌的服务器。
  • 资源服务器:托管受保护资源的服务器。 

要访问受保护资源,客户端应先从资源所有者处获取授权许可,并将其传递给授权服务器。授权服务器会验证该授权许可并生成访问令牌。客户端可以使用此令牌访问由资源服务器托管的受保护资源。      

用于单点登录的 OAuth 

ServiceDesk Plus 充当请求访问的客户端,并通过使用用户在授权服务器中的凭据从用户处获取授权许可(例如,用于 Azure AD 的 Microsoft Azure)。

该授权许可通过授权服务器进行处理以生成访问令牌。借助此访问令牌,ServiceDesk Plus 可以访问 Azure AD(资源服务器)以检索用户数据,并对用户进行身份验证以登录应用程序。

 我们已测试 OAuth 2.0 与 Microsoft AzureGoogle Workspace 作为授权服务器的兼容性。要在 ServiceDesk Plus 中配置 OAuth,您必须先在授权服务器中注册该应用程序。

授权服务器的 OAuth 配置

所需角色:SDAdmin
  • 转到 管理 > 用户和权限 > 单点登录 > OAuth SSO
  • 对于 ESM 设置,转到 ESM 目录 > 用户管理 > 单点登录 > OAuth SSO所需角色:OrgAdmin
  • 单击 + 新建
  • 新建 OAuth 配置 侧边栏中,输入以下详细信息: 

部分

字段

说明

OAuth 提供程序详细信息

 

 

 

提供程序名称

在下拉列表中单击 添加新项 以注册授权服务器。

如果已在 管理 > 用户和权限 > OAuth 提供程序 下注册,请从下拉列表中选择所需的授权。

 

客户端 ID

如果选择了 添加新项,请指定在授权服务器中注册应用程序时生成的客户端 ID、授权 URL 和令牌 URL。

否则,这些字段将自动填充。

授权 URL
令牌 URL

OAuth 功能详细信息

 

 

 

 

 

作用域

指定从资源 URL 获取用户数据所需的作用域。常用的作用域包括 openidprofileemail。 

  • openid - 发起 OpenID 身份验证请求所必需。
  • profile - 用于获取用户的基本资料信息,例如姓名、性别等。
  • email - 用于获取用户的电子邮件地址。
客户端密钥指定在授权服务器中注册应用程序时生成的客户端密钥。 
用户属性指定从资源 URL 接收到的 JSON 响应中的所需键。身份验证期间将使用此键来识别用户。 
映射属性选择用户属性要映射到的 ServiceDesk Plus 用户字段。对于通过 AD 导入的用户,请使用 User Principal Name 映射字段。
资源 URL指定客户端在获取访问令牌后调用以获取用户数据的 API 端点。您可以从授权服务器的 REST API 文档中获取相关信息。 
重定向 URL此字段会自动填充为用户登录后将被重定向到的 URL。此 URL 不可编辑。

附加字段

 

默认字段

配置字段映射,以便为通过 OAuth SSO 登录应用程序的动态用户创建用户资料。

• 使用复选框,在 默认字段用户定义字段 下启用所需的 ServiceDesk Plus 用户字段。

• 对于每个已启用的字段,指定相应的响应 JSON 属性。 

注意

• 此配置不会用于更新现有用户资料。 

• 日期/时间多行 字段在动态添加用户时不受支持。不过,它们可以通过现有的 AD/LDAP 同步进行同步。

用户定义字段
  • 配置完成后,单击 保存。 

  • 在列表视图中,
    • 启用 OAuth 配置以激活它。
    • 要为 ServiceDesk Plus 实施 OAuth,请启用 OAuth SSO 开关。 

 

要启用 OAuth SSO,必须至少有一个活动配置。
启用后,将启用动态用户添加。对于现有用户,请确保授权服务器中的登录名或电子邮件地址与其在应用程序中的资料信息匹配。否则,每出现一次不匹配,都会创建一个新的用户资料。
如果您启用了 AD/LDAP 同步,请确保动态用户的登录名和域在导入期间与其资料信息匹配。否则,在导入期间将创建新用户。 

列表视图操作 

  • 根据需要启用或禁用 默认折叠登录表单,以显示或隐藏默认登录表单。
  • 使用 OAuth 配置旁边的 操作 来编辑或删除它。 

通过 OAuth 登录 ServiceDesk Plus  

启用 OAuth 单点登录后的登录页面将如下所示:

用户可以使用本地身份验证(默认启用)登录,或者通过单击默认登录表单上方所需授权服务器的链接使用 OAuth 登录。

故障排除

 

错误代码

说明

解决方案

6

授权代码为空

请确保 ClientID、scope 和授权 URL 正确。

46OAuth 页面中配置的 URL 无法访问。

这可能由以下原因导致:

  • 令牌 URL 或资源 URL 无法访问
  • 代理或防火墙阻止了对令牌 URL 或资源 URL 中指定主机的访问。
  • 访问这些 URL 时发生 DNS 解析失败或连接超时。

请验证所配置的 URL 是否正确,并且服务器可以访问。确保 DNS 解析正常工作,且防火墙/代理允许访问这些主机。

50SAML 响应中缺少 InResponseTo 属性  了解更多

60

未找到用户(基于电子邮件的 OAuth 登录期间)

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

  • 如果启用了动态用户添加,新用户将自动添加。如果该用户已存在于应用程序中,请配置其电子邮件地址,使其与 ServiceDesk Plus 中的登录电子邮件 ID 匹配。

61

该用户的登录已被禁用。

为该用户启用登录。

62

有多个用户配置了该登录电子邮件 ID。

确保该登录电子邮件地址只配置给一个用户。如果该登录电子邮件 ID 被配置为其他用户的主/辅助电子邮件地址,则会引发此错误。

52(在 ServiceDesk Plus 中)

动态用户添加已禁用。

  • 如果该用户不存在于 ServiceDesk Plus 中,请使用响应中接收到的登录名手动创建新用户,或在自助服务门户设置中启用动态用户添加。

  • 如果该用户已存在于应用程序中,请确保属性映射中没有不匹配。

52(在 Asset Explorer 中)

应用程序中不存在此用户,或者该用户不是技术人员。

使用接收到的属性手动创建新技术人员,或将请求者更改为技术人员。

3

无效的客户端密钥

确保从提供程序处正确复制的是密钥值(而不是 Secret ID)