SpringBoot整合Keycloak实现单点登录

导读:本篇文章讲解 SpringBoot整合Keycloak实现单点登录,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

Keycloak是一个开源的身份和权限访问管理工具,轻松为应用程序和安全服务添加身份验证,无需处理储存用户或者验证用户,其提供用户联合、强健的身份验证、用户管理和细粒度授权等功能。

1. 搭建Keycloak服务器

本文使用docker compose安装keycloak,因为keycloak依赖数据库,在安装keycloak之前需要先安装数据库,本文使用mysql,具体的compose配置如下:

version: '3.7'
services:
  mysql:
    container_name: mysql
    image: mysql:latest
    restart: unless-stopped
    command: --lower_case_table_names=1 --sql-mode=""
    ports:
      - 3306:3306
    volumes:
      - ./db-init:/docker-entrypoint-initdb.d
      - ./data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: 123456
  keycloak:
    container_name: keycloak
    image: jboss/keycloak:latest
    restart: unless-stopped
    depends_on:
      - mysql
    environment:
      DB_VENDOR: mysql
      DB_USER: root
      DB_PASSWORD: 123456
      KEYCLOAK_USER: admin
      KEYCLOAK_PASSWORD: 123456
    ports:
      - 8080:8080

依次执行命令docker-compose up mysql和docker-compose up keycloak
安装mysql
安装keycloak

2. 配置权限

2.1. 登陆

在浏览器输入地址:http://localhost:8080,出现如下界面
首页
点击Administration Console,进入登录界面
登录页
输入用户名和密码:admin/123456,进入首页

2.2. 创建Realm

鼠标放在下图箭头所指处,会弹出Add realm选项
进入新增realm
点击Add realm进入配置页面,输入realm名称,点击Create
新增realm
配置重定向地址
创建重定向地址

2.3. 创建用户

点击左侧Users选项,进入用户创建页面
创建用户
点击Add user,进入创建用户,输入用户名称
创建用户
点击保存,选择Credentials配置密码
配置密码

2.4. 创建客户端

点击左侧Clients选项,点击Create
创建客户端
输入Client ID名称,点击保存
创建client

2.5. 创建角色

在左侧菜单栏选择Roles
创建角色
点击Add Role
创建角色

2.6. 配置用户角色关系

用户添加角色

2.7. 配置客户端和角色关系

选择左侧菜单项Clients,配置Client和角色的关系
client关联角色

3. 整合SpringBoot

3.1. 引入核心依赖

<dependencies>
	<dependency>
	    <groupId>org.springframework.boot</groupId>
	    <artifactId>spring-boot-starter-web</artifactId>
	</dependency>
	<dependency>
	    <groupId>org.keycloak</groupId>
	    <artifactId>keycloak-spring-boot-starter</artifactId>
	    <version>17.0.0</version>
	</dependency>
<dependencies/>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.keycloak.bom</groupId>
            <artifactId>keycloak-adapter-bom</artifactId>
            <version>17.0.0</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

3.2. 编写Controller

@RestController
@RequestMapping("/hello")
public class HelloController {

    @GetMapping("/world")
    public String hello() {
        return "Hello World";
    }
}

3.3. 编写application.yml

server:
  port: 8139
spring:
  application:
    name: springboot-keycloak
keycloak:
  realm: springboot-keycloak #客户端所在的realm
  auth-server-url: http://localhost:8080/auth #keycloak授权服务器地址
  resource: sb-keycloak #客户端名称
  public-client: true #声明为一个公开的客户端
  security-constraints:
    - auth-roles:
        - sk-role
      security-collections:
        - name: hello
          patterns:
            - '/hello/world'

更多有关SpringBoot整合Keycloak的相关资料,请参阅Keycloak官网文档

4. 验证

启动SpringBoot项目,在浏览器输入地址http://localhost:8139/hello/world,会重定向到keycloak登陆页面,如下图所示:
重定向到keycloak登陆页
输入用户名和密码:sk-admin/123456
跳转到访问页

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/76770.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!