Keycloak安装使用

226 阅读3分钟

1 安装Docker

1.1 下载镜像

GitHub官网github.com/keycloak/ke…

官方文档www.keycloak.org/documentati…

中文文档:keycloak.com.cn/docs/latest…

1.2 编辑docker-compose.yml

加入下面配置:

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

image-14.png image.png 一定注意这个选项,要变成OFF,否则会是临时密码,下次登录就必须要修改。

image-1.png

2.2 修改系统为不同语言

Realms是Keycloak的域,可以创建多个,进行隔离注册。登录后默认是master,可以根据项目创建不同的域,比如minio,pp等

image-2.png 而每个realm都可以设置自己的系统语言,所以当前的配置是针对master的realm进行的修改

image-3.png 可以选多个,一定记得报错

image-4.png 登录之后又多语言选择:

image-5.png

2.3 创建服务用client

2.3.1 创建域

image-6.png image-7.png

2.3.2 创建用户

  1. 创建用户

image-8.png image-9.png

  • 设置登录密码

image-10.png 一定要关闭成OFF

image-11.png

2.3.3 设置域配置

  1. 设置登录页面功能

image-12.png 登录查看:http://10.10.89.228:9100/realms/minio/protocol/openid-connect/auth

image-13.png

  • 事件设置

事件设置就是记录当前域所有的时间信息

image-15.png image-16.png image-17.png

  • 本地话设置(语言设置)

image-18.png 2.3.4 创建客户端

客户端可以用来完成不同功能,设置不同的客户端权限达到不同的鉴权功能

image-19.png

  1. 创建ID

其中最重要额是ID,不能用中文 image-20.png

  • 创建认证方式 image-21.png
  • 设置URL路径 image-22.png

2.3.4 创建Role角色

因为登录是需要policy的角色,需要创建 image-23.png image-24.png image-25.png

2.4 创建client scope

2.4.1 创建client scope, 名称为policy

image-26.png image-27.png

2.4.2 为scope赋权

选中刚才创建的scope,进行 image-28.png image-29.png image-30.png

2.4.3 增加新mapper

image-31.png 选择UserClientRole image-32.png image-33.png

2.5 为client添加scope

点击clients -> minio -> client scopes -> add client scope 添加上一步建好的client image-34.png image-35.png

2.6 创建新的用户组

2.6.1 创建新用户组 image-36.png 2.6.2 添加用户到组 image-37.png image-38.png 2.6.3 为组分配角色 image-39.png image-40.png

3 配置Minio

3.1 创建Minio中对应的policy权限

image-41.png admin权限:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": ["s3:*"],
            "Effect": "Allow",
            "Resource": ["arn:aws:s3:::*", "arn:aws:s3:::*/*"]
        }
    ]
}

readonly权限

{
    "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权限

{
    "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

image-42.png 各部分参数说明

image-43.png

  • Claim Name: 可写

  • Scopes: openid,email,profile,policy 。其中policy必须有

  • Claim User Info:Enabled

3.3 登录验证

3.3.1 登录Minio image-44.png 跳转到KeyCloak中 image-45.png 登录之后跳转到当前用户 image-46.png

4 配置公司LDPA

4.1 选好域选择User federation

image-47.png

4.2 填写配置信息

image-48.png image-49.png image-50.png 根据实际情况填写的部分,可能需要访问数据进行判断

通过下面的命令去访问主机查看返回值进行判断

# 安装具体工具
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"

image-51.png

4.3 同步用户到keycloak

保存之后去执行

image-52.png