【问题标题】:HTTP 403 forbidden error when Use Keycloak to protect a Tomcat App使用 Keycloak 保护 Tomcat 应用程序时出现 HTTP 403 禁止错误
【发布时间】:2016-12-10 09:33:19
【问题描述】:

我为这个错误挣扎了一整天。我一遍又一遍地检查我在tomcat中Keycloak和APP的配置,没有发现错误。

下图为测试场景:

APP的配置:

1.Keycloak.json 是从 Keycloak 控制台复制的

2.context.xml 也是正确的,因为它在“localhost”场景下工作正常

3.web.xml:

<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0">

    <module-name>Keycloak-Tomcat-App</module-name>

<!--
<security-constraint>
    <web-resource-collection>
        <web-resource-name>init pages</web-resource-name>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>user</role-name>
    </auth-constraint>
</security-constraint>
-->

<security-constraint>
    <web-resource-collection>
        <web-resource-name>All roles pages</web-resource-name>
        <url-pattern>/roles/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>admin</role-name>
    </auth-constraint>
</security-constraint>

<login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>this is ignored currently</realm-name>
</login-config>

<security-role>
    <role-name>admin</role-name>
</security-role>
<security-role>
    <role-name>user</role-name>
</security-role>

Keycloak 控制台配置:

我创建了一个名为 csf-admin 的用户,并将角色“admin”和“user”分配给 csf-admin

然后

1)在linux.1上使用broswer访问linux.3上部署在TOMCAT中的APP(用户https)

2)我的浏览器可以打开 Keycloak Auth 页面(用户 https , keycloak on linux.2)

3) 以 csf-admin 身份登录 keycloak

4)Keycloak 将我重定向到 APP url (使用 https)

5)HTTP 403“对指定资源的访问已被禁止。”出现

我真的不知道根本原因.....需要你的帮助.....

【问题讨论】:

  • 顺便说一句,如果我禁用 Keycloak ,我可以使用 https 访问 linux.2 上 APP 的整个资源
  • Tomcat Catalina.out 报告错误信息:[Aug 05, 2016 3:39:12 AM org.keycloak.adapters.OAuthRequestAuthenticator resolveCode ERROR: failed to turn code into token] 我添加 ["disable -trust-manager": true] 在 APP/WEB-INF/keycloak.json 中不起作用!
  • 我知道这是旧的,但是:你有这方面的日志吗?我现在正在处理一个类似的问题,看起来服务器正在发送一个 301(重定向),这导致了问题。
  • 对此有任何更新,我面临着类似的问题。

标签: java tomcat jboss single-sign-on keycloak


【解决方案1】:

由于问题是在提交登录页面和来自 Keycloak IDP 的重定向之后,问题应该出现在客户端应用程序 (APP) 尝试连接到 IDP 以获取访问令牌时。

  1. 可能存在从客户端应用程序到 IDP 的连接问题。可以使用 telnet 命令进行测试(使用您 IDP 的 https 端口)。

  2. 可能存在 IDP SSL 证书验证问题。检查是否使用了正确的域名。或者,如果您的客户端应用信任它的 CA。

另请参考链接帖子wildfly integration with keycloak 403 forbidden error

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-10
    • 1970-01-01
    • 2022-07-15
    • 2015-11-13
    • 1970-01-01
    相关资源
    最近更新 更多