微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

具有自定义用户联盟docker部署的密钥斗篷

如何解决具有自定义用户联盟docker部署的密钥斗篷

我正在尝试使用自定义用户联合身份验证提供程序在Docker上部署Keycloak。我想使用外部数据库作为用户身份验证的其他来源。我已经在主机上测试了配置(从.tar.gz提取的整个项目),并且可以正常工作-我可以在管理面板中从外部db搜索用户,或者登录到keycloak。

问题是,当我运行容器时,出现以下错误

12:36:36,127 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("deploy") Failed - address: ([("deployment" => "custom-user-storage-jpa.jar")]) - failure description: {
"WFLYCTL0412: required services that are not installed:" => ["jboss.naming.context.java.jboss.datasources.ExternalPostgresDS"],"WFLYCTL0180: Services with missing/unavailable dependencies" => [
    "jboss.persistenceunit.\"custom-user-storage-jpa.jar#custom-user-storage-jpa\" is missing [jboss.naming.context.java.jboss.datasources.ExternalPostgresDS]","jboss.persistenceunit.\"custom-user-storage-jpa.jar#custom-user-storage-jpa\".__FirsT_PHASE__ is missing [jboss.naming.context.java.jboss.datasources.ExternalPostgresDS]"
]

所以我假设我的jar看不到在standalone.xml中配置的(名称为ExternalPostgresDS)的数据源

我的自定义用户存储提供程序中有persistanceance.xml,后来由maven clean install内置在jar中

    <?xml version="1.0" encoding="UTF-8" ?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="
        http://java.sun.com/xml/ns/persistence
        http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
    <persistence-unit name="custom-user-storage-jpa">
        <jta-data-source>java:jboss/datasources/ExternalPostgresDS</jta-data-source>
        <properties>
            <property name="hibernate.hbm2ddl.auto" value="none" />
            <property name="hibernate.show_sql" value="false" />
            <property name="hibernate.dialect" value="org.hibernate.dialect.Postgresql95Dialect" />
        </properties>
    </persistence-unit>
</persistence>

standalone.xml中还有一节定义了数据源和驱动程序

                <xa-datasource jndi-name="java:jboss/datasources/ExternalPostgresDS" pool-name="ExternalPostgresDS" enabled="true" use-java-context="true" statistics-enabled="${wildfly.datasources.statistics-enabled:${wildfly.statistics-enabled:false}}">
                    <xa-datasource-property name="ServerName">
                        address...
                    </xa-datasource-property>
                    <xa-datasource-property name="PortNumber">
                        5432
                    </xa-datasource-property>
                    <xa-datasource-property name="DatabaseName">
                        dbname...
                    </xa-datasource-property>
                    <xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
                    <driver>postgresql</driver>
                    <security>
                        <user-name>username...</user-name>
                        <password>password...</password>
                    </security>
                    <validation>
                        <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgresqlValidConnectionChecker"/>
                        <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgresqlExceptionSorter"/>
                    </validation>
                </xa-datasource>
                <drivers>
                    <driver name="postgresql" module="org.postgresql">
                        <xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
                    </driver>
                    <driver name="h2" module="com.h2database.h2">
                        <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
                    </driver>
                </drivers>

最后还有一个Dockerfile,该文件应根据我的需要自定义官方keycloak映像:

FROM jboss/keycloak:11.0.2

ENV DB_vendOR postgres
ENV DB_ADDR addr..
ENV DB_DATABASE dbname...
ENV DB_USER user...
ENV DB_PASSWORD password...
ENV PROXY_ADDRESS_FORWARDING true
ENV KEYCLOAK_USER admin
ENV KEYCLOAK_PASSWORD password

copY ./_resources/standalone.xml /opt/jboss/keycloak/standalone/configuration/standalone.xml
copY ./_resources/custom-user-storage-jpa.jar /opt/jboss/keycloak/standalone/deployments/custom-user-storage-jpa.jar
copY ./_resources/postgresql/main/module.xml /opt/jboss/keycloak/modules/system/layers/keycloak/org/postgresql/main/module.xml
copY ./_resources/postgresql/main/postgresql-42.2.18.jar /opt/jboss/keycloak/modules/system/layers/keycloak/org/postgresql/main/postgresql-42.2.18.jar

ENV JAVA_OPTS -server -xms2048m -Xmx6144m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m

EXPOSE 8080

我当然检查了复制的文件是否正确以及它们在运行容器中的位置,启动后一切正常,但没有我的自定义用户存储部署。

我想念什么?

解决方法

似乎您的setState(() { _markers.removeWhere((key,marker) => marker.markerId.value == "myMarkerId"); }); 文件没有被读取,jboss尝试使用默认配置。

这里提到将默认文件名更新为standalone.xml https://lists.jboss.org/pipermail/keycloak-dev/2018-October/011304.html

将图像构建命令更新为

standalone-ha.xml

应该帮助

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?