postgresql Keycloak与Quarkus配置验证属性

cotxawn7  于 2024-01-07  发布在  PostgreSQL
关注(0)|答案(1)|浏览(153)

我喜欢像这样配置jdbc的验证(在wildfly上):

<validation>
     <check-valid-connection-sql>select 1</check-valid-connection-sql>
     <validate-on-match>false</validate-on-match>
     <background-validation-millis>10000</background-validation-millis>
</validation>

字符串
我不能在Keycloak上配置它。如果我配置一个Quarkus路由器就有可能。但是我担心Keycloak不能在Quarkus配置的路由器上使用。
我可以通过某种方式配置validationQuery,它的运行属性?Keyclok可以与Quarkus一起创建密码吗?我如何配置JDBC_PING和keycloak密码简单安全。(没有明文密码或SSL)
多谢了。

ggazkfy8

ggazkfy81#

Keycloak将KC前缀性质Map到 quarkus 性质。类是:

  • org.keycloak.quarkus.runtime.configuration.mappers.DatabasePropertyMappers* on
<dependency>
    <groupId>org.keycloak</groupId>
    <artifactId>keycloak-quarkus-server</artifactId>
</dependency>

字符串
所以keycloak's的密码应该是 quarkus 密码!
您可以使用这些环境变量:

SET QUARKUS_DATASOURCE_JDBC_VALIDATION_QUERY_SQL=select 1
SET QUARKUS_DATASOURCE_JDBC_BACKGROUND_VALIDATION_INTERVAL=10
SET QUARKUS_DATASOURCE_JDBC_FOREGROUND_VALIDATION_INTERVAL=10


另一个有趣的事情是,quarkus不支持JNDI,所以JDBC_PING不能被 * jndi_name* 参数化。
但是你可以像这样使用环境变量:

<JDBC_PING
        connection_driver="org.postgresql.Driver"
        connection_username="${env.KC_DB_USERNAME}"
        connection_url="${env.KC_DB_URL}"
        initialize_sql="CREATE SCHEMA IF NOT EXISTS ${env.KC_DB_SCHEMA:public}; CREATE TABLE IF NOT EXISTS ${env.KC_DB_SCHEMA:public}.JGROUPSPING (own_addr varchar(200) NOT NULL, cluster_name varchar(200) NOT NULL, bind_addr varchar(200) NOT NULL, updated timestamp default current_timestamp, ping_data BYTEA, constraint PK_JGROUPSPING PRIMARY KEY (own_addr, cluster_name));"
        insert_single_sql="INSERT INTO ${env.KC_DB_SCHEMA:public}.JGROUPSPING (own_addr, cluster_name, bind_addr, updated, ping_data) values (?, ?, '${env.JGROUPS_DISCOVERY_EXTERNAL_IP:127.0.0.1}', NOW(), ?);"
        delete_single_sql="DELETE FROM ${env.KC_DB_SCHEMA:public}.JGROUPSPING WHERE own_addr=? AND cluster_name=?;"
        select_all_pingdata_sql="SELECT ping_data, own_addr, cluster_name FROM ${env.KC_DB_SCHEMA:public}.JGROUPSPING WHERE cluster_name=?"
        info_writer_sleep_time="500"
        remove_all_data_on_view_change="true"
        stack.combine="REPLACE"
        stack.position="MPING"
    />


SSL和其他设置可以设置为jdbc_url参数。下面是一些描述:https://jdbc.postgresql.org/documentation/use/

相关问题