繁体   English   中英

无法使Keycloak Tomcat 7适配器正常工作(版本3.4.3)

[英]Cannot get Keycloak Tomcat 7 adapter to work (version 3.4.3.Final)

我有一个Spring Boot 1.5.2 Web App打包为.war,托管在Apache Tomcat 7.0.68上。

我想使用Keycloak Tomcat适配器,但是在配置中包含的每个端点上都遇到HTTP 401返回...我正在使用3.4.3。最终版本。

我已经阅读了文档@ http://www.keycloak.org/docs/2.5/securing_apps/topics/oidc/java/tomcat-adapter.html

事实:

  • 用户,组,角色,领域,客户端等位于Keycloak主配置中。

  • 下载https://downloads.jboss.org/keycloak/3.4.3.Final/adapters/keycloak-oidc/keycloak-tomcat7-adapter-dist-3.4.3.Final.zip并提取到<tomcat_folder>/lib/

  • 使用创建了一个META-INF/context.xml文件:

     <?xml version="1.0" encoding="UTF-8"?> <Context path="/my-app"> <Valve className="org.keycloak.adapters.tomcat.KeycloakAuthenticatorValve"/> </Context> 
  • 使用创建了一个WEB-INF/keycloak.json文件:

     { "realm" : "my_realm", "resource" : "my_client", "principal-attribute": "preferred_username", "truststore" : "/my_path/keycloak-truststore.jks", "ssl-required" : "external", "truststore-password" : "my_password", "credentials" : { "secret" : "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" }, "auth-server-url" : "http://<keycloak_server>.fr:8443/auth" } 
  • 使用创建了一个WEB-INF/web.xml文件:

     <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <display-name>my-app</display-name> <module-name>my-app</module-name> <login-config> <auth-method>BASIC</auth-method> <realm-name>my_realm</realm-name> </login-config> <security-constraint> <web-resource-collection> <url-pattern>/customer/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>uma_authorization</role-name> </auth-constraint> </security-constraint> <security-role> <role-name>uma_authorization</role-name> </security-role> 

(使用uma_authorization进行的简单测试,每个用户都具有该角色)

结论:除/ customer / *以外,每个端点上的HTTP 200均获得HTTP 401。

有趣的是 ,在调试中,我从CatalinaSessionTokenStore类(从Tomcat Keycloak Adapter依赖项)检测到第61行的变量account始终为null

Session catalinaSession = request.getSessionInternal(false);
if (catalinaSession == null) return;
SerializableKeycloakAccount account = (SerializableKeycloakAccount) catalinaSession.getSession().getAttribute(SerializableKeycloakAccount.class.getName());
if (account == null) {
    return;
}
(... next lines are to control the content of the Keycloak context)

即使已激活TRACE级别,Tomcat日志中也没有任何内容。

我忘记配置了什么吗? 是虫子吗?

谢谢

找到了。 在我的keycloak.json中,从切换:

"auth-server-url" : "http://<keycloak_server>.fr:8443/auth"

至 :

"auth-server-url" : "https://<keycloak_server>.fr:8443/auth"

没有日志,没有错误...很遗憾,Keycloak适配器配置记录得很差,几乎没有日志记录...

暂无
暂无

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

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