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