2

我正在使用带有外部 IdP 的 SAML 实施 SSO 选项。如果我在单击浏览器中的 SSO 按钮后检查收到的 SAML 响应,我可以看到我需要的身份验证数据(例如用户名和电子邮件),因此与 IdP 的通信工作正常。

但是 Keycloak 不执行登录,而是向我显示了一个页面,上面写着:“我们很抱歉......登录超时,请重新登录。”,并且没有注册新用户。我领域中令牌的登录超时设置为 30 分钟。

查看日志我发现以下错误:

keycloak_1  | 00:38:27,888 ERROR [org.keycloak.broker.saml.SAMLEndpoint] (default task-26) Assertion expired.
keycloak_1  | 00:38:27,889 WARN  [org.keycloak.events] (default task-26) type=IDENTITY_PROVIDER_RESPONSE_ERROR, realmId=master, clientId=null, userId=null, ipAddress=172.20.0.1, error=invalid_saml_response

我发现这可能是由于 IdP 和 SP 中的 EntityID 不一致,但我联系了我的 IdP 并且 EntityID 是相同的。

可能是什么问题呢?

4

2 回答 2

1

通常,SAML 响应无效。它可以是任何东西:错误的实体 ID、错误的时间、错误的签名/加密签名,......

源代码参考

于 2020-03-23T11:30:57.383 回答
1

显然问题是当计算机进入待机状态时 docker 容器的内部日期停止更新,因此这在 docker 容器上的服务提供者的过时日期和身份提供者的真实日期之间造成了差异。只需重新启动 docker 即可解决问题。

于 2020-04-06T16:35:44.203 回答