1 安装Docker
1.1 下载镜像
GitHub官网 :github.com/keycloak/ke...
官方文档 :www.keycloak.org/documentati...
中文文档:keycloak.com.cn/docs/latest...
1.2 编辑docker-compose.yml
加入下面配置:
bash
version: "3"
services:
keycloak:
image: quay.io/keycloak/keycloak:latest
container_name: keycloak
ports:
- "9100:8080"
environment:
- KC_BOOTSTRAP_ADMIN_USERNAME=username
- KC_BOOTSTRAP_ADMIN_PASSWORD=password
- KC_DB=postgres
- KC_DB_URL=jdbc:postgresql://10.10.89.229:5432/keycloak
- KC_DB_USERNAME=db_username
- KC_DB_PASSWORD=db_password
- http_proxy="http://username:password@proxy.neusoft.com:8080"
- https_proxy="http://username:password@proxy.neusoft.com:8080"
- KC_EMAIL_HOST=smtp.neusoft.com
- KC_EMAIL_PORT=587
- KC_EMAIL_FROM="nais_integration@neusoft.com"
- KC_EMAIL_USER="email_username"
- KC_EMAIL_PASSWORD="email_password"
- KC_EMAIL_SSL=false
- KC_EMAIL_STARTTLS=true
- KC_POP_HOST=mail.neusoft.com
- KC_POP_PORT=995
command: start-dev
参数说明
-
KC_BOOTSTRAP_ADMIN_USERNAME:初始化Admin用户名
-
KC_BOOTSTRAP_ADMIN_PASSWORD:初始化Admin密码
-
KC_DB: 使用后台数据库配型
-
KC_DB_URL:jdbc链接路径,keycloak是db_name
-
KC_DB_USERNAME: 数据库用户名
-
KC_DB_PASSWORD:数据库密码
-
http_proxy,https_proxy: 设置代理
-
start-dev: 启动命令
2 使用
2.1 修改登录密码
进入系统后点击 User -> username
一定注意这个选项,要变成OFF,否则会是临时密码,下次登录就必须要修改。

2.2 修改系统为不同语言
Realms是Keycloak的域,可以创建多个,进行隔离注册。登录后默认是master,可以根据项目创建不同的域,比如minio,pp等
而每个realm都可以设置自己的系统语言,所以当前的配置是针对master的realm进行的修改
可以选多个,一定记得报错
登录之后又多语言选择:

2.3 创建服务用client
2.3.1 创建域
2.3.2 创建用户
- 创建用户
- 设置登录密码
一定要关闭成OFF

2.3.3 设置域配置
- 设置登录页面功能
登录查看:http://10.10.89.228:9100/realms/minio/protocol/openid-connect/auth

- 事件设置
事件设置就是记录当前域所有的时间信息
- 本地话设置(语言设置)
2.3.4 创建客户端
客户端可以用来完成不同功能,设置不同的客户端权限达到不同的鉴权功能

- 创建ID
其中最重要额是ID,不能用中文
- 创建认证方式
- 设置URL路径
2.3.4 创建Role角色
因为登录是需要policy的角色,需要创建
2.4 创建client scope
2.4.1 创建client scope, 名称为policy
2.4.2 为scope赋权
选中刚才创建的scope,进行
2.4.3 增加新mapper
选择UserClientRole
2.5 为client添加scope
点击clients -> minio -> client scopes -> add client scope 添加上一步建好的client
2.6 创建新的用户组
2.6.1 创建新用户组 2.6.2 添加用户到组
2.6.3 为组分配角色
3 配置Minio
3.1 创建Minio中对应的policy权限
admin权限:
json
{
"Version": "2012-10-17",
"Statement": [
{
"Action": ["s3:*"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::*", "arn:aws:s3:::*/*"]
}
]
}
readonly权限
json
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:GetBucketLocation",
"s3:ListBucket",
"s3:ListBucketMultipartUploads"
],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::*"]
},
{
"Action": [
"s3:GetObject",
"s3:GetObjectVersion",
"s3:GetObjectTagging"
],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::*/*"]
}
]
}
readwrite权限
json
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:GetBucketLocation",
"s3:ListBucket",
"s3:ListBucketMultipartUploads"
],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::*"]
},
{
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject",
"s3:GetObjectVersion",
"s3:GetObjectTagging",
"s3:PutObjectTagging",
"s3:DeleteObjectVersion"
],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::*/*"]
}
]
}
3.2 设置Minio的Openid
各部分参数说明
-
Config URL:http://10.10.89.228:9100/realms/{minio}/.well-known/openid-configuration
-
Client ID: KeyCloak中的client id
-
Clients Secret:Client的Secret

-
Claim Name: 可写
-
Scopes: openid,email,profile,policy 。其中policy必须有
-
Claim User Info:Enabled
3.3 登录验证
3.3.1 登录Minio 跳转到KeyCloak中
登录之后跳转到当前用户
4 配置公司LDPA
4.1 选好域选择User federation

4.2 填写配置信息
根据实际情况填写的部分,可能需要访问数据进行判断
通过下面的命令去访问主机查看返回值进行判断
bash
# 安装具体工具
sudo apt install ldap-utils
# 发送请求查看返回值
ldapsearch -x -H ldap://10.10.88.63:389 -D "cn=nais_integration,ou=people,dc=neusoft,dc=internal" -w '密码' -b "CN=东软全体员工,OU=people,DC=neusoft,DC=internal"

4.3 同步用户到keycloak
保存之后去执行
