停更这些天,业余时间和粉丝群的几个大佬合作写了一个基于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

截图

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













简单用法

  • 拉取主分支最新代码到本地。
  • 通过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.ymlapplication-mysql.yml两个配置文件。

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

目前两种环境的效果是一致的,切换时务必在pom.xml中更换对应的数据库驱动程序依赖。

愿景

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

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

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

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

  1. android 开发 实现一个带图片Image的ListView

    注意:这种实现方法不是实现ListView的最优方法,只是希望通过练习了解ListView的实现原理 思维路线: 1.创建drawable文件夹将要使用的图片导入进去 2.写一个类,用于存放图片ID数 ...

  2. asp 读取 另外一个带参数的asp文件(服务器不支持!放弃吧!骚年!)

    (服务器不支持!放弃吧!骚年!) 主要作用是为了分离数据库,灵感是这样的:收到json影响,把asp里的数据,用一个页面输出,然后用另外一个页面读取,这样就不用有数据库位置的烦恼了 代码 网上有很多, ...

  3. 用java自带jdk开发第一个java程序

    [学习笔记] 1.用java自带jdk开发第一个java程序:   下面要讲的eclipse要想正常工作,需要先学会配置这里的jdk.jdk要想正常工作,需先学会配置JAVA_HOME和ClassPa ...

  4. 创建一个带模版的用户控件 V.3

    再重构此篇<创建一个带模版的用户控件  V.2>http://www.cnblogs.com/insus/p/4164149.html 让其它动态实现header,Item和Footer. ...

  5. 利用css transition属性实现一个带动画显隐的微信小程序部件

    我们先来看效果图 像这样的一个带过渡效果的小部件在我们实际开发中的应用几率还是比较大的,但是在开发微信小程序的过程中可能有的小伙伴发现transition这个属性它不好使(下面说明)所以我们这个时候会 ...

  6. 「六」创建一个带 weblogic 服务的基础镜像

    Weblogic Weblogic 简单介绍以及其在 Docker 环境下的特殊应用 WebLogic是美国Oracle公司出品的一个application server确切的说是一个基于JAVAEE ...

  7. Android 从零编写一个带标签 TagTextView

    最近公司的项目升级到了 9.x,随之而来的就是一大波的更新,其中有个比较明显的改变就是很多板块都出了一个带标签的设计图,如下: 怎么实现 看到这个,大多数小伙伴都能想到这就是一个简单的图文混排,不由得 ...

  8. Maven Filter与Profile隔离生产环境与开发环境

    Maven Filter与Profile隔离生产环境与开发环境 在不同的开发阶段,我们一般用到不同的环境,开发阶段使用开发环境的一套东西,测试环境使用测试环境的东西,可能有多个测试环境,生产环境使用的 ...

  9. worker 启动时向 etcd 注册自己的信息,并设置一个带 TTL 的租约,每隔一段时间更新这个 TTL,如果该 worker 挂掉了,这个 TTL 就会 expire 并删除相应的 key。

    1.通过etcd中的选主机制,我们实现了服务的高可用.同时利用systemd对etcd本身进行了保活,只要etcd服务所在的机器没有宕机,进程就具备了容灾性. https://mp.weixin.qq ...

随机推荐

  1. 会话缓存(Session Cache)?

    最常用的一种使用 Redis 的情景是会话缓存(session cache).用 Redis 缓存会 话比其他存储(如 Memcached)的优势在于:Redis 提供持久化.当维护一个不 是严格要求 ...

  2. 断言工具类之"判断条件不为空"

    1 Assert.notNull(query, AssertConstants.NOT_NULL_MSG);

  3. 使用Google Closure Compiler高级压缩Javascript代码

    背景 前端开发中,特别是移动端,Javascript代码压缩已经成为上线必备条件. 如今主流的Js代码压缩工具主要有: 1)Uglify http://lisperator.net/uglifyjs/ ...

  4. 《深入理解ES6》笔记——扩展对象的功能性(4)

    变量功能被加强了.函数功能被加强了,那么作为JavaScript中最普遍的对象,不加强对得起观众吗? 对象类别 在ES6中,对象分为下面几种叫法.(不需要知道概念) 1.普通对象 2.特异对象 3.标 ...

  5. 来扯点ionic3[7] LocalStorage的使用—以登录和注销为例

    一般意义上,一个互联网 APP 中的数据主自与服务器的交互,但是对于有些数据,我们希望获取到它们以后能保存,并在全局环境使用,比如用户数据--我们不希望在每个页面都从服务器拉取一遍.这时我们就可以利用 ...

  6. Linux 0.11源码阅读笔记-文件IO流程

    文件IO流程 用户进程read.write在高速缓冲块上读写数据,高速缓冲块和块设备交换数据. 什么时机将磁盘块数据读到缓冲块? 什么时机将缓冲块数据刷到磁盘块? 函数调用关系 read/write( ...

  7. Hadoop本地编写的jar包放到集群执行时报错处理

    错误描述: 020-03-24 22:45:23,204 WARN org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor ...

  8. 将百度地图Demo抽取出来安到自己的程序中

    今日所学: 使用百度地图ADK实现手机定位 [Android]使用百度.高德.腾讯地图SDK获取定位数据与屏幕截图分享到QQ_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili 代码获取SHA1 (2 ...

  9. Java报错:Injection of resource dependencies failed

    在学习springMVC+Mabatis的时候,添加注解@Resource报错 Injection of resource dependencies failed de完bug后发现有几个点注意一下, ...

  10. 生成swap分区之利用磁盘分区

    生成swap 分区方式很多,有利用磁盘分区来生成swap,这种效率比较高,他并不是文件系统, 另外我们还可以拿出磁盘一些空间,做成swap分区还有通过lvm逻辑卷的方式创建swap分区(这种分区就可以 ...