安全断言标记语言 (SAML) 是一种基于 XML 的数据格式,允许服务提供者与身份提供者(IdP)交换授权数据。最常见的用例就是允许用户使用相同的身份验证详情(通常是用户名和密码)登录多个软件应用。这被称为单点登录 (SSO)。
我们为 JIRA Software Data Center 和 JIRA Service Desk Data Center 应用提供了相关功能,可以连接到您的 IdP,以便您为用户提供 SSO 体验。这个功能只能处理身份验证。应用访问和任何必需的授权(例如确保用户属于相应群组/角色且拥有必要的权限)都应当在用户目录和/或应用本身内进行配置。
设置单点登录
您将需要配置应用和 IdP,以便为用户提供单点登录。
支持的身份提供程序
通过 HTTP POST,任何实现了 SAML 2.0 Web Browser SSO Profile 的身份提供程序都应该可以支持 SAML 单点登录。
我们目前使用以下身份提供程序执行测试:
设置 SSL/TLS
设置完成后,您需要确保应用程序配置的基础 URL 使用的是 HTTPS 协议。
使用反向代理设置 SSL/TLS
如果要使用反向代理,请参见以下这些产品特定文档,其中介绍了具体的配置步骤:
- 使用 Apache HTTP Server (mod_proxy_http) 代理 Atlassian 服务器应用
- 使用 SSL 将 JIRA 与 Apache 集成
- 通过使用 SSL 的 Apache 保护您的 Atlassian 应用
在使用终止 SSL / TLS 的反向代理时,您需要确保应用程序服务器看到的请求 URL 与反向代理的完全限定域名一致。这一点通常可以通过以下方法实现:使用相应的 proxyName、proxyPort, secure 和 scheme 设置来配置 <Connector> 指令。请查看上述文档以了解具体示例。
设置身份提供程序
如果您希望应用程序提供 SSO,则需要将其添加到您的 IdP。具体过程因 IdP 而异,但通常都需要执行以下操作:
- 在 IdP 中定义一个“应用程序”
- 提供一些有关此应用程序的数据,包括您可以在应用程序的 Authentication 屏幕上访问的数据
- 确保将 IdP 中用户的 NameID 属性设置为 Atlassian 应用程序中的用户名
- 授予用户相应的权限来使用此应用程序
设置过程结束时,您的 IdP 将为您提供一组配置 Atlassian 应用程序所需的数据。
在 Atlassian 应用程序中配置 SAML 身份验证
- 通过选择以下选项导航至“SAML Authentication”屏幕:> System > SAML Authentication。
- 选择 SAML single sign-on。
配置以下设置:
设置 注意 Single sign-on issuer
该值由 IdP 在设置 SAML 时提供。有时也被称为“Entity ID”
签发者是应用程序将从中接受身份验证请求的 IdP
Identity provider single sign-on URL
该值由 IdP 在设置 SAML 时提供。
它定义了您的用户登录时将重定向到的 URL。
X.509 Certificate
该值由 IdP 在设置 SAML 时提供。有时也被称为“Signing certificate”。证书通常以“----- BEGIN CERTIFICATE -----”开头。
这个证书包含的公钥用来确保所有收到的 SAML 身份验证请求确实都来自于您的 IdP。
Login mode
此设置定义了您的用户如何使用单点登录。选项包括:
- Use SAML as secondary authentication – 默认登录方式将是标准应用程序登录表单。如果您转到 IdP 并选择您的应用程序,则可使用 SAML 登录,或者也可以使用以下 URL 登录:BASE-URL/plugins/servlet/external-login。我们推荐这种方法,这样您可以测试所有设置是否配置正确,以及用户能否使用 SSO 登录。
- Use SAML as primary authentication – 在此模式下,所有基于浏览器的用户都将从应用程序的登录屏幕重定向到 IdP 以进行登录。您仍然可以通过以下方式进行身份验证:
- 基础身份验证
- 通过专用 REST 端点进行的基于表单的身份验证
- 现有的“Remember Me”令牌
只有在确认 SAML 身份验证能够按预期运行之后,您才能启用此模式。
Remember user logins 选中此设置后,用户的浏览器将记录成功的用户登录。当浏览用户的应用程序时,他们将自动登录,而不必再次使用 SAML 进行身份验证。 (JIRA Service Desk only) 选中此设置后,Service Desk 客户使用客户门户发出的所有登录请求都将被重定向到已配置的 IdP。如果未选中此设置,客户则必须通过客户门户登录。 “Authentication”屏幕上会提供以下信息,这也是配置 IdP 所需的信息:
设置名称 注意 Assertion Consumer Service URL 这是 IdP 将向其返回 SAML 身份验证请求的 URL。
Audience URL (Entity ID) 这是 IdP 将为其准备 SAML 身份验证请求的 URL。
- 单击 Save configuration。
配置好应用程序和 IdP 之后,就可以开始使用 SSO 了。
最佳实践
- SAML 身份验证请求仅在有限的时间内有效。您应该确保运行应用程序和 IdP 的服务器上的时钟同步。
- 如果使用用户目录配置应用程序中的用户和组,您通常需要使用相同的 LDAP 目录作为您的 IdP 和 Atlassian 应用程序的用户来源。用户必须存在于用户目录中,才能使用 SSO 登录。
故障排除
如果您配置 SAML 身份验证时出错或无法使用 IdP 登录,可以通过发出 DELETE 请求(使用用户目录中配置的管理员用户名和密码)来恢复登录表单身份验证:
curl -u admin_user:admin_password -X DELETE http://base-url/product/rest/authconfig/1.0/saml
- 如果出现身份验证错误,用户将只看到有关错误的基本信息。出于安全考虑,不会显示深层问题的相关详情。您需要查看应用程序日志,以发现问题产生的原因。
- 有时,您也可能会遇到 IdP 发生错误的情况。在这种情况下,您需要使用 IdP 提供的支持和工具,而不是 Atlassian 支持。
- 当使用 SAML as primary authentication 并且已经在应用程序中启用了 CAPTCHA 时,对于使用 HTTP 基础身份验证的用户(例如,在 REST 资源调用中),如果输错密码的次数过多,可能会被锁定。在这种情况下,需要由管理员在用户列表屏幕中重置用户的 CAPTCHA。