文章目录
  1. 1. keycloak从搭建到使用(一)
    1. 1.1. 通过docker方式安装keycloak

keycloak从搭建到使用(一)

keycloak 是一个针对Web应用和RESTfull Web API 提供SSO(Single Sign On:单点登陆),它是一个开源软件,源码地址是:https://github.com/keycloak/keycloak/

官网示例地址:
https://github.com/keycloak/keycloak-containers.git

核心概念:

users:用户是一个可以登陆系统的实体,它可以拥有联系它们自身的属性,例如邮箱、用户名、地址、电话号码或生日等,可以为user分配组别或者角色。

authentication:相当于密码,可以验证和识别一个user。

authorization:给予用户访问的过程。

credentials:证书,可以供keycloak验证用户的东西,例如密码、一次性密码、证书、指纹等。

roles:相当于用户的一个分类 ,一个组织可能有Admin\user\manager\emplee等角色,应用程序经常会分配权限给角色,而不是用户,因为用户太难管理。

user role mapping:定义了一个用户及角色的关系,一个用户可以属于零个或多个角色,用户与角色的映射关系,这样就可以决定用在各种资源访问的权限管理。

composite roles:复合角色可以包含其他的角色,用户拥有了复合角色就相当于拥有了它下面的所有子角色。

groups:组可以一组的用户,也可以将角色映射到角色中,用户可以成为组员后继承用组的角色

realms:领域,领域管理着一批,用户、证书、角色、组等,一个用户只能属于且能登陆到一个域,域之间是互相独立的,域只能管理在它下面的用户。

clients:客户端是一个实体,可以请求keycloak对用户进行身份验证,大部分情况下,客户端是应用或服务希望使用keycloak来保护自己和提供一个单点登录的解决方案。客户端也可以是一个实体,请求身份信息或一个访问信息,这样就可以调用其他keycloak保护的应用或服务了。

学习参考:https://www.jianshu.com/p/c9b1ecd28813

通过docker方式安装keycloak

docker-compose.yaml:

version: '3'

volumes:
  mysql_data:
      driver: local

services:
  mysql:
      image: mysql:5.7
      volumes:
        - mysql_data:/var/lib/mysql
      environment:
        MYSQL_ROOT_PASSWORD: root
        MYSQL_DATABASE: keycloak
        MYSQL_USER: keycloak
        MYSQL_PASSWORD: password
      ports:
         - 6666:3306
  adminer:
      image: registry.cn-shanghai.aliyuncs.com/hgq/phpmyadmin-5.0.4
      restart: always
      ports:
         - 9000:80
      environment:
        PMA_HOST: mysql
        PMA_PORT: 3306
        PMA_USER: keycloak
        PMA_PASSWORD: password
  keycloak:
      image: quay.io/keycloak/keycloak:12.0.2
      environment:
        DB_VENDOR: MYSQL
        DB_ADDR: mysql
        DB_DATABASE: keycloak
        DB_USER: keycloak
        DB_PASSWORD: password
        KEYCLOAK_USER: admin
        KEYCLOAK_PASSWORD: admin
        # Uncomment the line below if you want to specify JDBC parameters. The parameter below is just an example, and it shouldn't be used in production without knowledge. It is highly recommended that you read the MySQL JDBC driver documentation in order to use it.
        #JDBC_PARAMS: "connectTimeout=30000"
      ports:
        - 9001:8080
      depends_on:
        - mysql

访问新添加的realms:

http://10.105.141.164:9001/auth/realms/huazhu/account/

参考:
https://www.keycloak.org/getting-started/getting-started-docker

文章目录
  1. 1. keycloak从搭建到使用(一)
    1. 1.1. 通过docker方式安装keycloak