阅读量:0
文章目录
前一篇章中介绍搭建简单的PACS系统,但考虑到系统上线后的安全性,需要加入权鉴,于是开启Keycloak研究之路~ 放一个 官方的安装指导手册
其中需要五个docker服务
- Slapd
- PostgreSQL
- Archive
- Keycloak
- MariaDB
docker编排
安装篇完全参考官方操作,无踩坑~
version: "3" services: ldap: image: dcm4che/slapd-dcm4chee:2.6.6-32.0 logging: driver: json-file options: max-size: "10m" ports: - "389:389" - "636:636" environment: STORAGE_DIR: /storage/fs1 volumes: - /var/local/dcm4chee-arc/ldap:/var/lib/openldap/openldap-data - /var/local/dcm4chee-arc/slapd.d:/etc/openldap/slapd.d mariadb: image: mariadb:10.11.4 logging: driver: json-file options: max-size: "10m" ports: - "3306:3306" environment: MYSQL_ROOT_PASSWORD: secret MYSQL_DATABASE: keycloak MYSQL_USER: keycloak MYSQL_PASSWORD: keycloak volumes: - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - /var/local/dcm4chee-arc/mysql:/var/lib/mysql keycloak: image: dcm4che/keycloak:24.0.4 logging: driver: json-file options: max-size: "10m" ports: - "8843:8843" environment: KC_HTTPS_PORT: 8843 KC_HOSTNAME: <docker-host> KEYCLOAK_ADMIN: admin KEYCLOAK_ADMIN_PASSWORD: changeit KC_DB: mariadb KC_DB_URL_DATABASE: keycloak KC_DB_URL_HOST: mariadb KC_DB_USERNAME: keycloak KC_DB_PASSWORD: keycloak KC_LOG: file ARCHIVE_HOST: <docker-host> KEYCLOAK_WAIT_FOR: ldap:389 mariadb:3306 depends_on: - ldap - mariadb volumes: - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - /var/local/dcm4chee-arc/keycloak:/opt/keycloak/data db: image: dcm4che/postgres-dcm4chee:16.2-32 logging: driver: json-file options: max-size: "10m" ports: - "5432:5432" environment: POSTGRES_DB: pacsdb POSTGRES_USER: pacs POSTGRES_PASSWORD: pacs volumes: - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - /var/local/dcm4chee-arc/db:/var/lib/postgresql/data arc: image: dcm4che/dcm4chee-arc-psql:5.32.0-secure ports: - "8080:8080" - "8443:8443" - "9990:9990" - "9993:9993" - "11112:11112" - "2762:2762" - "2575:2575" - "12575:12575" environment: POSTGRES_DB: pacsdb POSTGRES_USER: pacs POSTGRES_PASSWORD: pacs AUTH_SERVER_URL: https://keycloak:8843 UI_AUTH_SERVER_URL: https://<docker-host>:8843 WILDFLY_CHOWN: /storage WILDFLY_WAIT_FOR: ldap:389 db:5432 keycloak:8843 depends_on: - ldap - keycloak - db volumes: - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - /var/local/dcm4chee-arc/wildfly:/opt/wildfly/standalone - /var/local/dcm4chee-arc/storage:/storage
默认登录用户
按照官方指导手册安装完成后,系统默认创建以下3个用户及分配角色。
用户 | 密码 | 角色(s) |
---|---|---|
root | changeit | auth root auditlog ADMINISTRATOR all roles specified by client realm-management |
admin | changeit | auth admin |
user | changeit | auth user |
访问Keycloak管理界面https://localhost:8843/admin/dcm4che/console
,使用默认的 root/changeit
登录
客户端和用户概念
在 Keycloak 中,
client
和user
是两个不同的概念,它们在身份验证和授权过程中扮演不同的角色
Client 是一个应用程序或服务,通常代表需要访问 Keycloak 进行身份验证和授权的客户端应用。
User 是使用 Keycloak 进行身份验证和授权的个体用户。用户可以是实际的系统用户,也可以是表示某个实体的虚拟用户。
区分
区分点 | 客户端 | 用户 |
---|---|---|
作用范围 | 应用程序or服务 | 个人or实体 |
角色分配 | 分配后控制对资源的访问权限 | 定义在授权过程中具有的权限 |
身份校验流程 | 通过用户名密码 | 通过客户端ID和秘钥 |
交互方式 | 前端应用程序与keycloak交互 | 通过API与keycloak交互 |
操作失误点
Users菜单栏查询
默认情况下,用户列表为空,官方解释原因:This realm may have a federated provider. Viewing all users may cause the system to slow down, but it can be done by searching for "*". Please search for a user above.
输入框中输入首字母后自动搜索(全词匹配),肯定是搜不到滴
只能再次选中输入框中输入,然后再按Enter搜索
创建用户并赋予最高权限
- 在Users菜单栏,点击
Add user
按钮 - 在页面中输入username(lizzy),点击
Create
按钮 - 在User list中,输入lizzy,从列表中进入用户详情页
- 选择
Role Mapping
点击Assign Role
按钮 - 弹框中选择
Filter by realm roles
,全选 - 弹框中选择
Filter by clients
,全选
执行步骤1-5,发现可以登录管理平台,但是会报permission error,点击菜单会出现Forbidden, permission needed: query-users
执行步骤6后,就可以正常登录和操作!
后记
对于Keycloak探索比较少,只是记录创建用户和客户端的过程及采坑点~~