隔离这几天开发了一个带控制台的OAuth2授权服务器分享给大家

停更这些天,业余时间和粉丝群的几个大佬合作写了一个基于 Spring Authorization ServerOAuth2 授权服务器的管理控制台项目Id Server,我觉得这个项目能够大大降低 OAuth2 授权服务器使用难度。可以让你很方便地去管理OAuth2客户端信息,甚至可以一键生成 OAuth2 配置文件。接下来简单介绍一下 Id Server 这个项目。

项目地址:https://github.com/NotFound403/id-server 记得Star一下。

主要功能

  • 开箱即用,简单配置后即可使用。
  • 创建OAuth2客户端,并对OAuth2客户端进行管理。
  • 提供OAuth2授权服务。
  • 支持四种客户端认证方式:
    • CLIENT_SECRET_BASIC
    • CLIENT_SECRET_POST
    • CLIENT_SECRET_JWT
    • PRIVATE_KEY_JWT
  • 支持三种OAuth2授权方式:
    • AUTHORIZATION_CODE
    • CLIENT_CREDENTIALS
    • REFRESH_TOKEN
  • OIDC 1.0 的支持(完善中)。
  • 一键生成配置
    yaml
    文件(正在开发中)。
  • 提供UI控制台,降低上手成本。
  • 可动态调整管理员的用户角色,对授权服务器进行按钮功能级别的权限控制。

主要技术

  • Spring Boot
  • Spring Security
  • Spring Authorization Server
  • Spring Data JPA
  • layui
  • thymeleaf
  • 数据库
    • H2
    • Mysql

截图

说这么多,不如放一些图更直观。

控制台台登录
首页
通过UI创建OAuth2客户端
创建管理用户
角色授权
授权登录
授权确认

简单用法

  • 拉取主分支最新代码到本地。
  • 通过
    IdServerApplication
    来启动授权服务器。管理控制台本地登录路径为
    http://localhost:9000/system/login
    ,最高权限用户为
    root
    ,密码为
    idserver
  • 你可以通过
    root
    用户做这些事情:
    • 创建角色(角色管理)并为角色绑定权限。
    • 创建控制台管理用户(用户管理),并赋予他们角色。

退出功能还未完善,需要通过关闭浏览器来清除session。

OAuth2 测试方法

  • 启动 Id Server ,默认情况下在客户端列表提供了一个内置的OAuth2客户端。
  • 样例客户端在
    samples
    文件夹下,直接启动,浏览器配置文件下的
    http://127.0.0.1:8082/foo/bar
    ,进入登录页,输入用户名
    user
    和密码
    user
    即可。
  • 你也可以在Id Server中创建一个客户端并模仿DEMO中的配置,主要修改
    client-id
    ,
    client-secret
    ,
    client-authentication-method
    ,
    scope
    ,其它选项除非你比较了解OAuth2,否则先不要动,也可以通过issue咨询。

redirect-uri
必须在授权服务器Id Server注册客户端时声明。

如何替换内置用户user

首先要正确区分管理用户和普通用户这两个概念。

管理用户

root
及其创建的用户为UI控制台的管理用户,超级管理员
root
是目前提供了一个默认用户,具有Id Server的最高权限。如果你需要自定义,可实现
RootUserDetailsService
接口并注入 Spring IoC

普通用户

普通用户就是OAuth2中的资源拥有者,主要对OAuth2客户端的授权请求进行授权。默认提供了一个

user
用来演示,开发者可以实现
OAuth2UserDetailsService
接口并注入 Spring IoC 来自定义用户的来源。

多环境

目前 Id Server 提供 H2Mysql 两种数据库环境,分别对应

application-h2.yml
application-mysql.yml
两个配置文件。

  • H2 ,默认数据库,在 H2 环境下,数据库DDL脚本和DML脚本会自动执行,无需开发者手动执行,该环境主要用来测试、研究、学习。
  • Mysql ,生产推荐, 首次启动时开发者手动执行初始化DML脚本

目前两种环境的效果是一致的,切换时务必在

pom.xml
中更换对应的数据库驱动程序依赖。

愿景

这个项目希望能够帮助大家学习和使用 OAuth2 ,目前项目主线功能已经完成,配置生成器和 OIDC 相关的功能正在跟进。希望大家多多支持, star 一下。通过 issues 多提 BUG ,多提需求。

关注公众号:Felordcn  获取更多资讯

个人博客:https://felord.cn

标签: Java

添加新评论