服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - SpringBoot整合Keycloak实现单点登录的示例代码

SpringBoot整合Keycloak实现单点登录的示例代码

2022-10-13 13:07liu320yj Java教程

本文主要介绍了SpringBoot整合Keycloak实现单点登录的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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

SpringBoot整合Keycloak实现单点登录的示例代码

SpringBoot整合Keycloak实现单点登录的示例代码

 

2. 配置权限

2.1. 登陆

在浏览器输入地址:http://localhost:8080,出现如下界面

SpringBoot整合Keycloak实现单点登录的示例代码

点击Administration Console,进入登录界面

SpringBoot整合Keycloak实现单点登录的示例代码

输入用户名和密码:admin/123456,进入首页

2.2. 创建Realm

鼠标放在下图箭头所指处,会弹出Add realm选项

SpringBoot整合Keycloak实现单点登录的示例代码

点击Add realm进入配置页面,输入realm名称,点击Create

SpringBoot整合Keycloak实现单点登录的示例代码

配置重定向地址

SpringBoot整合Keycloak实现单点登录的示例代码

2.3. 创建用户

点击左侧Users选项,进入用户创建页面

SpringBoot整合Keycloak实现单点登录的示例代码

点击Add user,进入创建用户,输入用户名称

SpringBoot整合Keycloak实现单点登录的示例代码

点击保存,选择Credentials配置密码

SpringBoot整合Keycloak实现单点登录的示例代码

2.4. 创建客户端

点击左侧Clients选项,点击Create

SpringBoot整合Keycloak实现单点登录的示例代码

输入Client ID名称,点击保存

SpringBoot整合Keycloak实现单点登录的示例代码

2.5. 创建角色

在左侧菜单栏选择Roles

SpringBoot整合Keycloak实现单点登录的示例代码

点击Add Role

SpringBoot整合Keycloak实现单点登录的示例代码

2.6. 配置用户角色关系

SpringBoot整合Keycloak实现单点登录的示例代码

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

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

SpringBoot整合Keycloak实现单点登录的示例代码

 

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登陆页面,如下图所示:

SpringBoot整合Keycloak实现单点登录的示例代码

输入用户名和密码:sk-admin/123456

SpringBoot整合Keycloak实现单点登录的示例代码

 到此这篇关于SpringBoot整合Keycloak实现单点登录的示例代码的文章就介绍到这了,更多相关SpringBoot Keycloak单点登录内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/liu320yj/article/details/123593108

延伸 · 阅读

精彩推荐