我正在使用Keycloak 5.0.0作为身份代理。我已将其作为SAML应用程序连接到G Suite。我已将其他SAML应用程序连接到G Suite,所以我知道了该演练,并且将G Suite元数据XML导入了SAML,因此我相信X.509密钥是正确的,但是由于某些原因,如果我选择“验证签名”在Keycloak中,验证失败。日志说
ERROR [org.keycloak.broker.saml.SAMLEndpoint] validation failed
WARN [org.keycloak.events] type=IDENTITY_PROVIDER_RESPONSE_ERROR, realmId=master, clientId=null, userId=null, ipAddress=10.10.2.1, error=invalid_signature
如果我在G Suite中关闭“签名响应”或在Keycloak中关闭“ Want Assertions Signed”或“ Validate Signature”,则一切正常,但是我希望这是因为Keycloak在这种情况下不会尝试验证签名(当“ Want Assertions Signed”和“ Validate Signature”打开但“ Signed Response”关闭时,这当然是另一个错误。)
我该如何解决?
答案 0 :(得分:0)
原来,我对“签名响应”的含义有误。根据G Suite的有关设置受支持的特定SAML应用程序的文档,但是在“设置自己的自定义SAML应用程序”文档中找不到该文档,“签名响应”并不意味着我的意思。
如果未选中签名响应复选框,则仅对断言进行签名。选中签名响应复选框后,整个响应都将签名。
我已验证(通过更改X.509密钥并观察结果),未选中“签名的响应”并打开了“想要声明声明”和“验证签名”,Keycloak正在验证声明是否已签名。这样便是正确,有效和安全的配置。