基于dcm4chee搭建的PACS系统讲解(二)添加Keycloak鉴权

avatar
作者
猴君
阅读量: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)
rootchangeitauth
root
auditlog
ADMINISTRATOR
all roles specified by client realm-management
adminchangeitauth
admin
userchangeitauth
user

访问Keycloak管理界面https://localhost:8843/admin/dcm4che/console,使用默认的 root/changeit 登录

客户端和用户概念

在 Keycloak 中,clientuser 是两个不同的概念,它们在身份验证和授权过程中扮演不同的角色
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搜索

创建用户并赋予最高权限

  1. 在Users菜单栏,点击Add user按钮
  2. 在页面中输入username(lizzy),点击Create按钮
  3. 在User list中,输入lizzy,从列表中进入用户详情页
  4. 选择Role Mapping点击Assign Role按钮
  5. 弹框中选择Filter by realm roles,全选
  6. 弹框中选择Filter by clients,全选

执行步骤1-5,发现可以登录管理平台,但是会报permission error,点击菜单会出现Forbidden, permission needed: query-users
执行步骤6后,就可以正常登录和操作!

后记

对于Keycloak探索比较少,只是记录创建用户和客户端的过程及采坑点~~

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!