Keycloak安装使用

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 创建用户

  1. 创建用户

  • 设置登录密码

一定要关闭成OFF

2.3.3 设置域配置

  1. 设置登录页面功能

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

  • 事件设置

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

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

2.3.4 创建客户端

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

  1. 创建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

各部分参数说明

  • 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

保存之后去执行

相关推荐
NocoBase14 小时前
如何设计 RBAC(基于角色的访问控制)系统
低代码·开源·资讯
白鲸开源17 小时前
从批到流,Zoom 基于 DolphinScheduler 的流批统一调度系统演进
java·大数据·开源
茫茫人海一粒沙17 小时前
Milvus:开源向量数据库的初识
数据库·开源·milvus
白鲸开源17 小时前
二次开发必看!DolphinScheduler 3.1.9 开发环境搭建指南
java·大数据·开源
双向3317 小时前
AIGC在不同行业的应用场景与实践案例
开源
白鲸开源17 小时前
SeaTunnel 云仓连接器使用指南 | AI 助手解读系列
大数据·开源·aigc
三花AI18 小时前
zAI 发布 Zread AI:智能分析开源项目
开源
ApacheSeaTunnel18 小时前
破 400!Apache SeaTunnel 成为全球开发者共建热土
大数据·开源·github·seatunnel
海豚调度20 小时前
从批到流,Zoom 基于 DolphinScheduler 的流批统一调度系统演进
大数据·开源·zoom·apache dolphinscheduler·批流一体
杨荧21 小时前
基于大数据的旅游推荐系统 Python+Django+Hive+Vue.js
大数据·前端·vue.js·hive·python·开源·旅游