SpringBoot集成Keycloak简单实例

SpringBoot集成Keycloak简单实例

  • 环境安装
  • 准备工作
    • Keycloak
      • 创建realm
      • 创建client
      • 配置Client
      • 创建Role
      • 创建User
      • 分配User的角色
      • 配置Client和Role映射
    • SpringBoot
      • 创建一个简单的SpringBoot项目
      • 添加依赖
      • 配置文件
      • 添加代码
  • 开始测试

环境安装

keycloak10.0.1安装教程

准备工作

Keycloak

创建realm

点击Add Realm
SpringBoot集成Keycloak简单实例_第1张图片
输入Name,点击Create按钮。我们就创建了一个名为myrealm的realm。
SpringBoot集成Keycloak简单实例_第2张图片

创建client

创建完realm后,我们来为myrealm创建Client ,点击下图的Create按钮
SpringBoot集成Keycloak简单实例_第3张图片
填写Client信息,这边我们创建一个名为keycloakDemo的Client。
SpringBoot集成Keycloak简单实例_第4张图片

配置Client

点击Client ID或者后面的Edit都可进入Client配置界面
SpringBoot集成Keycloak简单实例_第5张图片
修改Client配置
SpringBoot集成Keycloak简单实例_第6张图片

创建Role

选择左边Role菜单,点击表格右上角的Add Role
在这里,我们添加两个角色,角色名分别为demoUsernotDemoUser
SpringBoot集成Keycloak简单实例_第7张图片

创建User

选择左侧User菜单,选择表格右上角的Add User
在这里,我们创建两个角色demouser和notdemouser
SpringBoot集成Keycloak简单实例_第8张图片
创建好用户后,选择Credentials,并在下方输入两次密码并把Tempoorary右侧的On点一下改成Off(不改的话首次登陆需要修改密码),给用户添加密码
SpringBoot集成Keycloak简单实例_第9张图片

分配User的角色

创建好用户后进入用户配置界面,选择Role Mappings,并在下方Realm Roles中选择需要添加的角色,并点击Add selected按钮即可添加用户角色。
在这里,我们给demouser分配了demoUser角色,给notdemouser分配了notDemoUser角色。
SpringBoot集成Keycloak简单实例_第10张图片

配置Client和Role映射

  1. 选择左侧Clients,选择我们的keycloakDemo,进入配置页面
  2. 选择Scope,将默认的Full Scope Allowed后面的On点击改为Off
  3. 选择我们分配的角色——demoUser,点击Add selected按钮添加到右侧
  4. 映射成功
    SpringBoot集成Keycloak简单实例_第11张图片

SpringBoot

创建一个简单的SpringBoot项目

在这里我们创建一个名为keycloakdemo的web项目
SpringBoot集成Keycloak简单实例_第12张图片

添加依赖

添加依赖管理,引入Keycloak adapter的bom
注意,bom版本需要和keycloak版本一致

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.keycloak.bomgroupId>
      <artifactId>keycloak-adapter-bomartifactId>
      <version>10.0.1version>
      <type>pomtype>
      <scope>importscope>
    dependency>
  dependencies>
dependencyManagement>

添加Keycloak的starter

<dependency>
  <groupId>org.keycloakgroupId>
  <artifactId>keycloak-spring-boot-starterartifactId>
  <version>10.0.1version>
dependency>

如果不明白怎么加,完整pom.xml如下


<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0modelVersion>
    <parent>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-parentartifactId>
        <version>2.2.7.RELEASEversion>
        <relativePath/> 
    parent>
    <groupId>com.examplegroupId>
    <artifactId>demoartifactId>
    <version>0.0.1-SNAPSHOTversion>
    <name>demoname>
    <description>Demo project for Spring Bootdescription>

    <properties>
        <java.version>1.8java.version>
    properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starterartifactId>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-testartifactId>
            <scope>testscope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintagegroupId>
                    <artifactId>junit-vintage-engineartifactId>
                exclusion>
            exclusions>
        dependency>

        
        <dependency>
            <groupId>org.keycloakgroupId>
            <artifactId>keycloak-spring-boot-starterartifactId>
            <version>10.0.1version>
        dependency>

    dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
            plugin>
        plugins>
    build>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.keycloak.bomgroupId>
                <artifactId>keycloak-adapter-bomartifactId>
                <version>10.0.1version>
                <type>pomtype>
                <scope>importscope>
            dependency>
        dependencies>
    dependencyManagement>
project>

配置文件

application.yml中添加如下配置

spring:
  application:
    name: keycloakDemo
server:
  port: 8600
keycloak:
  # 表示是一个public的client
  public-client: true
  # keycloak的地址
  auth-server-url: http://localhost:8080/auth
  # keycloak中的realm
  realm: myrealm
  # client ID
  resource: keycloakDemo
  # 安全约束
  securityConstraints:
    - authRoles:
        # 以下路径需要demoUser角色才能访问
        - demoUser
      securityCollections:
        # name可以随便写
        - name: common user
          patterns:
            - /demo/getValue

添加代码

package com.example.keycloakdemo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author Administrator
 */
@SpringBootApplication
public class KeycloakdemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(KeycloakdemoApplication.class, args);
    }

}

@RestController
@RequestMapping("/demo")
class DemoController{
    @GetMapping("getValue")
    public String getValue(){
        return "Hello Keycloak!";
    }
}

开始测试

  1. 启动项目
  2. 输入http://localhost:8600/demo/getValue,会跳转到keycloak登陆页面
    SpringBoot集成Keycloak简单实例_第13张图片
  3. 用demouser登陆,页面显示如下
    SpringBoot集成Keycloak简单实例_第14张图片
  4. 用notdemouser登陆,页面显示如下
    SpringBoot集成Keycloak简单实例_第15张图片
  5. keycloak测试完毕

参考文章链接:Keycloak搭建手把手操作指南

你可能感兴趣的:(开发实例,java,spring,boot,spring)