Keycloak:同一领域中每个 SAML 客户端的唯一 SAML 端点

问题描述 投票:0回答:1

我正在单个 Keycloak 领域内设置多个 SAML 客户端(Keycloak 是 IdP)。这个想法是在同一领域内为同一 SP 拥有多个 SAML 客户端。

SAML client 1
将由
Entity A
使用,
SAML client 2
将由
Entity B
使用。

服务提供商是一个外部应用程序,其中

Issuer
中的
SAMLRequest
对于所有客户来说都是相同的(我们称之为
https://test.net/
)。

在 Keycloak 中创建第一个 SAML 客户端没有问题,一切正常。在同一个 Keycloak 领域中创建第二个 SAML 客户端时,我在设置

Client ID
时收到错误,因为
Client ID
通常需要与 SP
Issuer
匹配,但由于
https://test.net/
已被该客户端的客户端 ID 占用Keycloak 中的第一个 SAML 客户端,我无法添加具有相同
Client ID
的第二个 SAML 客户端。

如果我将第二个 SAML 客户端的

Client ID
更改为
https://test.net/
以外的其他内容,则 SAML 流程会中断,因为 SP 在
Issuer
中传递的
SAMLRequest
与第一个 SAML 客户端的
Client ID
不匹配Keycloak 中的第二个 SAML 客户端。

其他 IdP(例如 Azure AD 和 Okta)为每个 SAML 客户端提供唯一的登录 SAML 端点,以便当 SP 调用 IdP SAML 端点时,IdP 已经知道应针对哪个 SAML 客户端对用户进行身份验证,并且不依赖于SP

Issuer
.

如何在同一领域中为每个 SAML 客户端拥有唯一的 SAML 端点,以便 Keycloak 不只依赖于 SP

Issuer

single-sign-on keycloak saml saml-2.0
1个回答
0
投票

我已经找到了解决这个问题的方法。 Keycloak 不允许同一领域内的每个 SAML 客户端拥有唯一的 SAML 端点(对于“SP 发起的登录”),但它确实为同一领域内的每个 SAML 客户端提供唯一的 URL,用于“IdP 发起的登录” .

因此,解决方案是为每个 SAML 客户端输入唯一的 IdP 发起的登录 URL 作为外部应用程序中的 SAML 端点(在服务提供商 SSO 设置上)。这会将用户转发到 IdP 发起的登录流程(即使用户在 SP 端发起 SSO 登录),并且由于 URL 对于相应的 SAML 客户端是唯一的,因此 Keycloak 已经知道要针对哪个 SAML 客户端对用户进行身份验证使流程完全独立于 SP 发行者/客户 ID

© www.soinside.com 2019 - 2024. All rights reserved.