java - Keycloak SAML 重定向在登录后卡在循环中

标签 java tomcat basic-authentication saml-2.0 keycloak

我正在尝试使用 SAML 使用 Keycloak 保护 url:/monitoring

我修改了我的 web.xml :

<web-app>

    <!-- Javamelody Access check -->
    <login-config>
        <auth-method>KEYCLOAK-SAML</auth-method>
        <realm-name>this is ignored currently</realm-name>
    </login-config>
    <security-role>
        <role-name>monitoringrole</role-name>
    </security-role>
    <security-constraint>
        <web-resource-collection>
            <web-resource-name>Monitoring</web-resource-name>
            <url-pattern>/monitoring</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>monitoringrole</role-name>
        </auth-constraint>
    </security-constraint>

    <listener>
        <listener-class>
            org.springframework.web.context.request.RequestContextListener
        </listener-class>
    </listener>
</web-app>

我还使用正确的 Valve 修改了我的 tomcat7 的 context.xml 文件,并在 /WEB-INF 中添加了 keycloak-saml.xml。 我已正确重定向到 IdP,但即使在成功登录后,我仍不断收到此消息:您已登录

我想我正在重定向到我正在保护的同一个 url,但是 keycloak 不应该授予我访问该页面的权限吗? Keycloak screen after successfully logging in

这是我在 keycloak 服务器上的配置: enter image description here

我是否遗漏了配置方面的内容?

最佳答案

面对同样的issue .通过 Keycloak 日志查找 Info: Assertion expired。在我的例子中,KeycloakService Provider (client) 在不同的机器上。错误的区别是他们的系统时间在不同的时区。

SP 根据其时区在 UTC 中创建 SAMLRequest,并且根据不同的时区在 UTC 中发送 SAMLResponse

因此,保持相同的时区解决了这个问题。

关于java - Keycloak SAML 重定向在登录后卡在循环中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50681822/

相关文章:

java - 有人可以解释一下 application 在这个 hashcode() 合约中的实际含义吗?

java - 有适用于 Thinlet 0.75 的文档吗?

java - 如何在 RESTful webapp 中创建新的 HttpSession?

java - Base64 编码基本身份验证 header Apache HTTP 客户端

java - 检查java字符串中的^字符

java - 配置为监听端口 8080 的 Tomcat 连接器启动失败

java - 使用在 netbeans 上工作但不在 tomcat 8 上工作的 java 发送电子邮件

django - 如何在 Django 中使用 Spyne 的基本身份验证?

basic-authentication - 有没有一种简单的方法可以为 Meteor 应用程序设置 HTTP 基本身份验证?

java JFileChooser 文件大小过滤器