自学内容网 自学内容网

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


前一篇章中介绍搭建简单的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探索比较少,只是记录创建用户和客户端的过程及采坑点~~


原文地址:https://blog.csdn.net/huhui806/article/details/140552751

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!