停更这些天,业余时间和粉丝群的几个大佬合作写了一个基于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. 图灵机器人 V1 和 V2 接入方法

    API1.0使用方法: import requests import json import yuyinhecheng as hc def Tuling(words):     Tuling_API_ ...

  2. freemarker与vue使用图片路径获取问题,可双单引号一起使用则可

    <el-table :data="leftPage.datas" style="width: 100%"  @selection-change=" ...

  3. OpenCV+QT5在Window下的环境配置记录

    在安装OpenCV时最需要注意的是,OpenCV库,也就是我们需要的dll和动态库需要我们使用CMake来生成. 虽然在官网上下载得到的文件中已经包含了库文件和.h等头文件,但是在具体开发中编译器编译 ...

  4. solr集群搭建,zookeeper集群管理

    1. 第一步 把solrhome中的配置文件上传到zookeeper集群.使用zookeeper的客户端上传. 客户端命令位置:/root/solr-4.10.3/example/scripts/cl ...

  5. Java 新内存(cache)模型解析

    JMM 相关文档: Java Language Specification Chapter 17 The JSR-133 Cookbook for Compiler Writers - Doug Le ...

  6. C++ | 动多态 | 虚函数表

    多态机制 C++语言有三大特性:封装.继承.多态. 其中所谓的多态,即 "同一接口,不同形态".接口在我们 C/C++ 语言中可以理解为函数名,不同形态可以理解为函数执行的功能不同 ...

  7. C++ | 虚函数产生条件

    虚函数产生的条件 能否成为虚函数主要有以下两种判断依据,如果以下两种条件均满足,则具有成为虚函数的条件. 1.虚函数机制为动多态提供支持,而虚函数表中存放着虚函数的地址.因此虚函数必须是可以取地址的函 ...

  8. 妙趣横生的HTML5 Page Visibility API

    起因 最近浏览36kr 的网页的时候偶然发现一个有趣的情况:当浏览器Tab 处于非当前页的时候,36kr 的标题栏会自动换成可爱的大白字符形象.Jeff 在第一次看到的时候就知道这种效果是通过HTML ...

  9. JS 实现下拉框去重

    JS 实现下拉框去重 学习内容: 需求 总结: 学习内容: 需求 用 JS 下拉框去重 实现代码 <html> <head> <meta http-equiv=" ...

  10. EMS设置发送连接器和接收连接器邮件大小

    任务:通过EMS命令设置发送接收连接器和接收连接器的邮件大小限制值为50MB. 以Exchange管理员身份打开EMS控制台.在PowerShell命令提示符下. 键入以下命令设置接收-连接器的最大邮 ...