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