使用 SAML IDP 将 keycloak 与 Active Directory 连接发送空响应

Connecting keycloak with Active Directory with SAML IDP sends empty response

我们在使用 SAML 连接 keycloak(版本 9)和 Active Directory IDP(版本 3)时遇到问题:尽管我们已经配置了响应属性,但 Azure IDP 响应为空状态响应。

有时会起作用,但大多数时候会产生登录循环。据我所知,没有执行登录(没有登录屏幕),但使用了系统的登录信息。 (浏览器为firefox)

SAML 响应如下所示:

<samlp:Response ID="_1629646f-f163-4ba1-beaa-58c44bc14494"
                Version="2.0"
                IssueInstant="2021-12-20T07:23:37.407Z"
                Destination="https://keycloak.mydomain/auth/realms/CUSTOMER/broker/saml/endpoint"
                Consent="urn:oasis:names:tc:SAML:2.0:consent:unspecified"
                InResponseTo="ID_d2e30a9a-7f0c-4811-a88c-b1cbebc3329b"
                xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
                >
    <Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">http://fs.customer.com/adfs/services/trust</Issuer>
    <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
        <ds:SignedInfo>
            <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
            <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" />
            <ds:Reference URI="#_1629646f-f163-4ba1-beaa-58c44bc14494">
                <ds:Transforms>
                    <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
                    <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
                </ds:Transforms>
                <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
                <ds:DigestValue>....</ds:DigestValue>
            </ds:Reference>
        </ds:SignedInfo>
        <ds:SignatureValue>h....=</ds:SignatureValue>
        <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
            <ds:X509Data>
                <ds:X509Certificate>/...</ds:X509Certificate>
            </ds:X509Data>
        </KeyInfo>
    </ds:Signature>
    <samlp:Status>
        <samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Responder" />
    </samlp:Status>
</samlp:Response>

有人可以给我提示吗?

• 您的 saml 状态响应如下从发行者(即 ADFS 服务器)收到:-

 ‘ <samlp:Status>
    <samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Responder" />
</samlp:Status> ‘

这表明身份提供者,即发出 SAML 身份验证声明的 Active Directory,由于 wrong/missing 用户权限或服务提供商配置,阻止了有关 user/application 的身份验证。很可能是缺少访问 SAML SSO 服务提供商的权限,这会导致此错误,因此请检查用户在身份提供商处的权限。

因此,建议您参考以下 link 再次检查 ADFS 服务器中的 keycloak 配置,并遵循以下针对 ADFS 服务器的 keycloak 配置的最佳配置实践:-

https://www.keycloak.org/2017/03/how-to-setup-ms-ad-fs-30-as-brokered

最佳实践:-

How to force login per client with keycloak (¿best practice?)