Keycloak SAML 实施
最后更新于
最后更新于
对应的官方文档地址
本文是专门针对 Keycloak 用于配置 SAML 2.0 方式的 SSO 登录的帮助。有关其他 IdP 方式配置 SSO 登录的帮助,请参阅 SAML 2.0 配置。
配置需要在 Bitwarden 网页密码库和 Keycloak 门户网站中同时进行。在您继续进行操作时,我们建议您随时准备好并按照记录的顺序完成步骤。
已经是 SSO 专家?跳过本文中的说明,然后下载示例配置,将里面的屏幕截图与您自己的配置进行比较。
⬇️下载示例
如果你是直接从 SAML 2.0 配置过来的,你应该已经创建了一个组织 ID 并打开了 SSO 配置界面。如果你没有,请参考那篇文章,为 SSO 创建一个组织 ID。
导航到您组织的管理 → 单点登录界面:
你不需要编辑此界面上的任何内容,但要保持打开以方便引用。
如果您是自托管 Bitwarden,您可以选择性使用成员解密选项。此功能默认情况下被禁用,因此现在继续使用主密码解密,并了解如何在配置完成并成功运行后开始使用 Key Connector。
在 Keycloak 门户中,创建一个新的客户端:
在 Add Client 界面上,配置以下设置:
完成后,选择 Save 按钮。
在 Settings 选项卡上,配置以下选项:
在 Fine Grain SAML Endpoint Configuration 界面,配置 Assertion Consumer Service POST Binding URL 或者 Assertion Consumer Service Redirect Binding URL。您将在后面的步骤中选择是使用 HTTP POST 还是 Redirect(重定向),因此请配置为您想要使用的那一种:
对于任一字段,将其设置为从 Bitwarden SSO 配置界面获取到的预先生成的断言消费者服务(ACS)URL。对于云托管客户,其始终为 https://sso.bitwarden.com/saml2/your-org-id/Acs
;对于自托管实例,这取决于您已配置的服务器 URL,例如 https://your.domain.com/sso/saml2/your-org-id/Acs
。
选择 Mappers 选项卡并创建以下所有映射:
从导航中,选择 Realm Settings → Keys 然后获取您的证书:
在后面的步骤中您将需要此证书。
至此,你已经在 Keycloak 门户网站范围内配置好了你所需要的一切。回到 Bitwarden 网页密码库来完成配置。
单点登录界面将配置分为两个部分:
SAML 服务提供程序配置将决定 SAML 请求的格式。
SAML 身份提供程序配置将决定用于 SAML 响应的预期格式。
配置以下字段:
完成服务提供程序配置部分后,Save(保存)您的工作。
身份提供者配置通常会要求您返回 Keycloak 门户网站以获取客户端的值:
完成身份提供程序配置部分后,Save(保存)您的工作。
您可以通过激活单点登录身份验证策略来要求用户使用 SSO 登录。请注意,这需要先激活单一组织政策。了解更多。
配置完成后,通过导航到 https://vault.bitwarden.com 并选择 Enterprise Single Sign-On 按钮来进行测试:
输入已配置的组织标识符,然后选择 Log In。如果您的实施已成功配置,您将被重定向到 Keycloak 的登录界面:
使用 Keycloak 凭据进行身份验证后,输入您的 Bitwarden 主密码以解密您的密码库!
字段 | 描述 |
---|---|
字段 | 描述 |
---|---|
字段 | 描述 |
---|---|
字段 | 描述 |
---|---|
Client ID
将此字段设置为从 Bitwarden SSO 配置界面中预先生成的 SP Entity ID。
对于云托管客户,其始终为 https://sso.bitwarden.com/saml2
;对于自托管实例,这由您配置的服务器 URL 决定,例如为 https://your.domain.com/sso/saml2
。
Client Protocol
选择 saml
。
Client SAML Endpoint
输入您的主 SAML 处理 URL,例如 https://<keycloak_domain>/auth/realms/master/protocol/saml
。
Name
给客户端取一个唯一的、专用于 Bitwarden 的名称。
Enabled
切换到 On。
Sign Documents
指定 SAML 文档是否应由 Keycloak 领域签名。
Sign Assertions
指定 SAML 声明是否应由 Keycloak 领域签名。
Signature Algorithm
如果启用了 Sign Assertions,请选择签名的算法(默认为 sha-256
)。
Name ID Format
选择要在 SAML 响应中使用的 Keycloak 的名称 ID 格式。
Valid Redirect URLs
将此字段设置为从 Bitwarden SSO 配置界面获取到的预先生成的断言消费者服务(ACS)URL。
对于云托管客户,其始终为 https://sso.bitwarden.com/saml2/your-org-id/Acs
;对于自托管实例,这取决于您已配置的服务器 URL,例如 https://your.domain.com/sso/saml2/your-org-id/Acs
。
Base URL
将此字段设置为用户访问 Bitwarden 的登录 URL。
对于云托管客户,其始终为 https://vault.bitwarden.com/#/sso
。对于自托管实例,这由您配置的服务器 URL 决定,例如为 https://your.domain.com/#/sso
。
Master SAML Processing URL
如果没有自动填写,请将此字段设置为您的主 SAML 处理 URL,例如 https://<keycloak_domain>/auth/realms/master/protocol/saml
。
Name ID Format
选择您在配置 Keycloak 客户端时所选择的名称 ID 格式。
Outbound Signing Algorithm
Bitwarden 用来签署 SAML 请求的算法。
Signing Behavior
SAML 请求是否/何时将被签名。
Minimum Incoming Signing Algorithm
选择 Keycloak 客户端被配置为用于签署 SAML 文档或声明的算法。
Want Assertions Signed
Bitwarden 是否要求 SAML 声明被签名。如果开启,请确保配置了 Keycloak 客户端的 Sign Assertions(签名声明)。
Validate Certificates
通过受信任的 CA 使用来自 IdP 的受信任和有效证书时,请选中此框。除非在 Bitwarden SSO 登录 docker 镜像中配置了适当的信任链,否则自签名证书可能会失败。
Entity ID
输入之前创建客户端的 Keycloak 领域的 URL,例如 https://<keycloak_domain>/auth/realms/master
。
Binding Type
选择 HTTP POST 或 Redirect。
Single Sign On Service URL
输入您的主 SAML 处理 URL,例如 https://<keycloak_domain>/auth/realms/master/protocol/saml
。
Single Log Out Service URL
SSO 登录当前不支持 SLO。该选项计划用于将来的开发,但是如果您愿意,您可以使用您的 Logout URL 预先配置它。
Artifact Resolution Service URL
将此字段留空,Keycloak SAML 仅支持 HTTP POST 和 Redirect(重定向)。
X509 Public Certificate
黏贴已下载的证书,移除 -----BEGIN CERTIFICATE-----
和 -----END CERTIFICATE-----
。
多余的空格、回车符和其他多余的字符将导致证书验证失败。
Outbound Signing Algorithm
选择 Keycloak 客户端被配置为用于签署 SAML 文档或声明的算法。
Allow Unsolicited Authentication Response
SSO 登录当前不支持未经请求(由 IdP 发起)的 SAML 声明。该选项计划用于将来的开发。
Disable Outbound Logout Requests
SSO 登录当前不支持 SLO。该选项计划用于将来的开发。
Want Authentication Requests Signed
Keycloak 是否要求 SAML 请求被签名。