当前位置: 首页 > 知识库问答 >
问题:

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

松骏俊
2023-03-14

事实:

>

  • 用户、组、角色、领域、客户机等存在于主Keycloak配置中。

    下载https://downloads.jboss.org/keycloak/3.4.3.final/adapters/keycloak-oidc/keycloak-tomcat7-adapter-dist-3.4.3.final.zip并在 /lib/ 下解压缩

    <?xml version="1.0" encoding="UTF-8"?>
    <Context path="/my-app">
        <Valve className="org.keycloak.adapters.tomcat.KeycloakAuthenticatorValve"/>
    </Context>
    
    {
       "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"
    }
    
    <?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/*外,每个endpoint上都有HTTP200,在这里我得到了HTTP401。

    有趣的是,在调试中,我检测到CatalinasessionTokenStore类(来自Tomcat Keycloak适配器依赖项)第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)
    

    谢谢

  • 共有1个答案

    史弘致
    2023-03-14

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

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

    致:

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

    没有日志,没有错误...遗憾的是,Keycloak适配器配置的文档记录很差,几乎不存在日志记录...

     类似资料:
    • 我正在用下面的源代码执行一个Maven项目 .. .. … src/main/资源中的架构 src/main/资源中的绑定文件 最后是POM文件 演示类在我使用 JDK 1.6 执行时生成以下输出 但出于某种原因,它使用JDK 1.7及更高版本生成以下内容(较新的JAXB?) 我怎样才能让它在JDK 1.7或更新版本的JAXB上工作? 更多信息: maven-jaxb2-plugin与其他类一起生

    • 我只是写了一些小代码试图让我的KeyEvent管理器工作。 正如你所见,我创建了一个JFrame并添加了gameComponent,它是Game类的一个对象。我将JPanel设置为可调焦,并请求调焦。然后将名为TAdapter的KeyAdapter设置为KeyAdapter。您可以在代码的最底层看到该类,它扩展了KeyAdapter和方法keyPressed()。 我告诉程序在按下一个键时将“按下

    • 我已经创建了一个绑定适配器来显示毕加索的图片,但它不工作。我有以下错误: 发现数据绑定错误。****/数据绑定错误****Msg:在Android.Widget.ImageView上找不到参数类型为java.lang.String的属性'app:loadPicture'的设置器。文件:/home/groupevsc.com/mathieu_labar/documents/projects/andr

    • 我发现RxJava存在一些问题(我想尝试RXJava2,这里我看到了RXJava1和RXJava2)。在添加了所有依赖项之后,问题就出现了,我们没有在主应用程序中使用。 更新:正如我在下面提到的,我检查了三个主题(你可以在下面看到)。这个问题:可能的重复类似于我已经在下面提到的一个:这个。这两种方法都没有考虑到我在回答中强调的真正问题。答案是“从Registfit2到RXJava2目前还没有生产就

    • 问题内容: 我们的构建服务器运行Jenkins 1.502,并将Subversion插件升级到1.45版。此插件使用。 另外,我们还安装了SVN客户端1.7.8。 Jenkins已成功从SVN信息库检出源代码。但是当我进入工作区目录并尝试手动运行一些svn命令时,它失败了: 错误消息表明工作副本是由SVN 1.4创建的,但是svnkit的版本是1.7.6。怎么会这样? 我搜索了整个文件系统,没有其

    • 我们的构建服务器运行Jenkins 1.502,Subversion插件升级到1.45版。该插件使用<code>svnkit-1.7.6-Jenkins-1.jar。 我们还安装了SVN客户端1.7.8。 Jenkins成功地从SVN存储库中签出了源代码。但当我转到工作区目录并尝试手动运行一些svn命令时,它失败了: 错误消息指示工作副本是由 SVN 1.4 创建的,但 svnkit 的版本是 1