转载

Keycloak Docker镜像安装与Springboot集成使用入门

docker pull mysql:5.7

内网仓库:

docker pull registry-1.docker.io/library/mysql:5.7`

创建服务网络

docker network create keycloak-network

创建本地数据卷

docker volume create mysql-data-keycloak

启动Mysql实例

First start a MySQL instance using the MySQL docker image:

docker run --restart=always --name mysql  /
--network keycloak-network /
-p 13306:3306 /
-v mysql-data-keycloak:/var/lib/mysql /
-e MYSQL_DATABASE=keycloak /
-e MYSQL_USER=keycloak /
-e MYSQL_PASSWORD=keycloak /
-e MYSQL_ROOT_PASSWORD=root123 /
-d mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

登录mysql授权:

docker attach mysql
mysql -u root -p
GRANT ALL PRIVILEGES ON `keycloak`.* TO 'keycloak' @'%';
grant all on *.* to 'keycloak'@'%' identified by 'keycloak' with grant option; 
flush privileges;

安装Keycloak

下载镜像:

docker pull docker.io/jboss/keycloak

或者:

docker.io/icolabora/keycloak

启动keycloak:需要设置useSSL=false

docker run --restart=always --name keycloak /
--network keycloak-network  /
-p 6060:8080 /
-e KEYCLOAK_USER=admin /
-e KEYCLOAK_PASSWORD=admin /
-e DB_VENDOR=mysql /
-e DB_ADDR=mysql /
-e DB_PORT=3306 /
-e DB_DATABASE=keycloak /
-e DB_USER=root /
-e DB_PASSWORD=root123 /
-e JDBC_PARAMS='connectTimeout=90&useSSL=false' /
-v /etc/localtime:/etc/localtime /
docker.io/jboss/keycloak

启动成功后,访问:

http://192.168.56.101:6060/

Keycloak使用入门

理解关键点

  • Realm:域,理解为一个项目空间,彼此隔离
  • Client:客户端,理解为某个微服务应用
  • Role:角色
  • User:用户
  • Access type:访问类型

理解授权过程

Three main processes define the necessary steps to understand how to use Keycloak to enable fine-grained authorization to your applications:

  • Resource Management 资源管理:就是哪些是受保护的内容
  • Permission and Policy Management 权限和政策管理:即资源权限与政策对应关系
  • Policy Enforcement 政策执行:角色对应关系

部署代码

下载 keycloak-quickstarts ,导入app-athuz-springboot项目。

修改配置文件:

keycloak.auth-server-url=http://192.168.56.101:6060/auth
keycloak.ssl-required=none
...
logging.level.root=ON
logging.level.org.springframework.boot=ON
spring.main.banner-mode=CONSOLE

由于原来项目httpclint包有冲突,修改pom.xml

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.5</version>
</dependency>

启动项目。

配置keycloak

admin登录keycloak之后, Add Realm -> select file ,选择项目中 config/quickstart-realm.json
查看clint中app-authz-springboot是否正常。

主要查看Authorization中的 Resources Policies Permissions 是否有效。

我导入后发现政策和权限没有对应的资源,删除后手动建的。

Keycloak Docker镜像安装与Springboot集成使用入门

集成测试

访问: http://localhost:8080/
在user角色中的用户可以访问普通保护资源 /protected/* ,在user-premium中的用户可以访问高级保护资源 /protected/premium/* .

异常记录

无效的参数 : redirect_uri

在keycloak服务器client中修改valid-redirect uris:

http://localhost:8080/*

原文  https://ranying666.github.io/2020/04/24/keycloak-quickstarts/
正文到此结束
Loading...