繁体   English   中英

Keycloak 的 SAML 单次注销

[英]SAML Single Logout for Keycloak

我正在尝试在 keycloak 中为 SAML 实现单次注销,并且文档没有正确提及这一点并且令人困惑。 我正在寻找有关如何实施它的确切步骤。 到目前为止,我所做的是:

生成注销请求载荷,base64 对其进行编码,url 对其进行编码并将其作为参数发送到注销 url。 假设 realm 名称为Abc

http://auth-server/auth/realms/Abc/protocol/saml?SAMLRequest={encodedSAMLRequest}

saml 有效载荷是

<samlp:LogoutRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" ID="random uuid" Version="2.0" IssueInstant="2021-02-09T06:53:26Z" Destination="ip-address:8443/auth/realms/Abc/protocol/saml">
  <saml:Issuer>https://ip-address:8443/auth/realms/Abc</saml:Issuer>
  <saml:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress">user-email@abc.com</saml:NameID>
</samlp:LogoutRequest>

但是,在发送此消息时,我收到 400 错误消息“未知登录请求者”(即使我想注销)

这里的网站说请求是有效的。 也许我错过了一些额外的参数或什么? 我还需要一个确切的发送方式。 我必须使用 scala。 提前致谢!

我认为您的发行人可能是错误的。 看起来您的颁发者是 Keycloak URI,但它应该是代表您的应用程序(服务提供者)的 URI。 它与您在 Keycloak 管理 gui 中配置的 SAML 客户端的客户端 ID 字段相同

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM