Skip to main content

Keycloak

Docker#

  • jboss/keycloak
  • /opt/jboss/keycloak/themes - 主题目录
  • /opt/jboss/keycloak/standalone/deployments - 自定义 provider 目录
  • /opt/jboss/startup-scripts - 启动运行脚本目录
EnvDefaultDescription
KEYCLOAK_USER
KEYCLOAK_PASSWORD
KEYCLOAK_USER_FILE
KEYCLOAK_PASSWORD_FILE
DB_VENDORh2,postgres,mysql,mariadb,oracle,mssql
默认自动检测
DB_ADDR
DB_PORT
DB_DATABASE
DB_SCHEMA
DB_USER
DB_USER_FILE
DB_PASSWORD
DB_PASSWORD_FILE
PROXY_ADDRESS_FORWARDINGfalse在代理之后需要接受反向代理参数
KEYCLOAK_FRONTEND_URL前端地址
KEYCLOAK_LOGLEVELINFOALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE, WARN
ROOT_LOGLEVELINFO
KEYCLOAK_STATISTICSdb,http/metrics 暴露的信息
KEYCLOAK_WELCOME_THEME
KEYCLOAK_DEFAULT_THEMEkeycloak
KEYCLOAK_IMPORT可指定一个 realm json 文件导入
# 默认启动使用 H2# 映射出数据可重复启动不丢配置# 需要添加的用户会生成配置到 /opt/jboss/keycloak/standalone/configuration/keycloak-add-user.jsondocker run --rm -it \  -p 8080:8080 \  -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin \  -v $PWD/keycloak/data:/opt/jboss/keycloak/standalone/data \  --name keycloak jboss/keycloak
docker run --rm -it --entrypoint bash \  -e -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin \  -v $PWD/keycloak:/opt/jboss/.keycloak \  -v $PWD:/host -w /host \  --name keycloak jboss/keycloak
# 配置文件# $HOME/.keycloak/kcadm.configdocker run --rm -it --entrypoint bash \  -v $PWD/keycloak:/opt/jboss/.keycloak \  -v $PWD:/host -w /host \  --name keycloak jboss/keycloak
export PATH=/opt/jboss/keycloak/bin:$PATH
# master 授权kcadm.sh config credentials --server http://localhost:8080/auth --realm master --user admin --password admin
# 授权信息kcadm.sh config credentials --server http://localhost:8080/auth --realm demo --user admin --client admin# 创建域kcadm.sh create realms -s realm=demorealm -s enabled=true -o# 创建 ClientCID=$(kcadm.sh create clients -r demorealm -s clientId=my_client -s 'redirectUris=["http://localhost:8980/myapp/*"]' -i)
# 获取 oidc 连接信息kcadm.sh get clients/$CID/installation/providers/keycloak-oidc-keycloak-json
# H2 Consolejar="./modules/system/layers/base/com/h2database/h2/main/h2-*.jar"url="jdbc:h2:./standalone/data/keycloak;AUTO_SERVER=TRUE"
java -cp $jar org.h2.tools.Console -url "$url" -user sa -password sa

LDAP#

group-ldap-mapper#

  • 分组映射
  • 注意
    • 不能有同名组,会导致无法同步回 Keycloak
    • LDAP 无法识别同名组
选项翻译说明
LDAP Groups DN分组 DN例如 ou=groups,dc=wener,dc=me
Group Name LDAP AttributeLDAP 属性 -> 分组名字
Group Object Classes对象类groupOfNames groups
Preserve Group Inheritance保留层级如果不保留,则同步后都是顶级
如果保留,存在相同名字分组会导致同步异常
Ignore Missing Groups忽略缺少分组
Membership LDAP Attribute表示成员的 LDAP 属性例如 member
Membership Attribute Type成员属性类型DN UID
Membership User LDAP Attribute成员用户 LDAP 属性UID 模式则使用该字段表示,一般为 uid
LDAP Filter过滤条件
Mode模式LDAP_ONLY,IMPORT,READ_ONLY
User Groups Retrieve Strategy查询策略
Member-Of LDAP AttributememberOf 属性
Mapped Group Attributes映射属性例如 description,ou,o
Drop non-existing groups during sync同步删除不存在分组LDAP 到 Keycloak 时候