基于spring-security-oauth2搭建授权服务器(一)

背景:需要API网关控制权限,单点登陆。

当前关于这方面的系统资料较少,因此大多是找寻网上零散的示例解析,结合官方文档中的demo再加上源码跟踪调试来进行学习与搭建。但由于涉及的知识点较多,且零散示例中配置或实现方式各有不同,作者经常只会记录关键、核心部分内容,因此会漏掉一些基础配置信息,给初学者带来极大困难。往往按照多个示例拼凑出来的demo无法正常运行,或者不明就里。官方给出的文档又需要具备一定英文功底。综合以上因素,这篇文章横空出世:)既包含周边理论知识浅析,又包含实际案例demo完整代码(为了保证下载即可正常运行已附上SQL语句)

涉及知识点:

Oauht2基础知识(授权类型,运行流程)

SpringBoot项目增加https支持(https协议简单概述)

Keytools工具基本使用(常用命令参数解析及证书类别)

Springsecurity知识(spring-security-oauth2是基于springsecurit的,很多配置相关都是沿用springsecurity的)

具体项目实现(包含服务端及客户端具体实现,鉴权、SSO)

Oauht2基础知识

既然是要搭建基于spring-security-oauth2的授权服务器,那Oauth2的基础原理和运行流程我们还是需要了解一下的,否则对于授权模式选择和认证授权流程会比较晕。对于Oauth2的介绍这里强烈推荐: 理解OAuth2.0,在这里只简单描述和摘抄部分关键信息。

核心角色介绍

三方客户端

资源所有者

认证服务器

资源服务器

为了便于理解,这里举一个大家耳熟能详的应用场景来介绍各个角色在实际应用中是如何交互的:在一个愉快的周六午后,小明同学吃完午饭就迫不及待的躺在床上,拿起手机打开吃鸡游戏(三方客户端),为了便于同朋友开黑,小明选择了微信登陆的方式,这时候吃鸡游戏(三方客户端)跳转到一个微信登陆认证页面(认证服务器),在这里小明(资源所有者)输入账号密码(身份认证),登陆成功后界面上显示:是否授权使吃鸡游戏可以访问你的微信头像、昵称、好友资料等。(授权)。授权通过后,剩下是后台处理,用户不可见(返回给客户端一个授权码,客户端拿到授权码结合开始申请授权时的appkey申请token,通过后客户端凭着这个token去资源服务器获取用户头像、昵称等信息)

客户端的授权模式

  • 授权码模式(authorization code)
  • 简化模式(implicit)
  • 密码模式(resource owner password credentials)
  • 客户端模式(client credentials)

关于这4种授权模式的区别,详细内容请参见OAuth2.0,在这里我给出了自己比较土的解释:

授权码模式:安全性最高,也是比较常用的方式,但是整个流程最长。运行流程见上面举的“吃鸡”游戏登陆授权例子。

简化模式: 跳过了获取授权码的环节,后续流程同授权码模式。

密码模式:把账号密码给到客户端程序,由客户端程序去请求认证服务器获取token,这种方式客户端是能够获取到用户名、密码信息的。

客户端模式:这种其实就和用户授权没什么关系,需要认证的主体是客户端本身了,客户端本身以自己的名义去找认证服务器要授权。

原文地址:https://www.cnblogs.com/falcon-fei/p/9043450.html

时间: 2024-10-11 15:16:59

基于spring-security-oauth2搭建授权服务器(一)的相关文章

基于Spring Security OAuth2搭建的Spring Cloud 认证中心

Github传送门:https://github.com/13babybear/bounter-oauth2 实现功能有: 整合JWT 刷新Token 自定义客户端储存 自定义用户储存 资源服务器JWT本地鉴权 密码Bcrypt加密 支持的授权模式: 客户端 用户名密码 授权码 原文地址:https://www.cnblogs.com/gdufs/p/9718930.html

springboot+spring security +oauth2.0 demo搭建(password模式)(认证授权端与资源服务端分离的形式)

项目security_simple(认证授权项目) 1.新建springboot项目 这儿选择springboot版本我选择的是2.0.6 点击finish后完成项目的创建 2.引入maven依赖  下面是我引入的依赖 1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&q

Spring security oauth2最简单入门环境搭建

关于OAuth2的一些简介,见我的上篇blog:http://wwwcomy.iteye.com/blog/2229889 PS:貌似内容太水直接被鹳狸猿干沉.. 友情提示 学习曲线:spring+spring mvc+spring security+Oauth2基本姿势,如果前面都没看过请及时关闭本网页. 我有信心我的这个blog应该是迄今为止使用spring security oauth2最简单的hello world app介绍了,如果你下下来附件源码还看不懂,请留言.. 其他能搜到的如h

Spring Security OAuth2 授权失败(401 问题整理

Spring Cloud架构中采用Spring Security OAuth2作为权限控制,关于OAuth2详细介绍可以参考 http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html 项目中采用OAuth2四种模式中的两种,Password模式和Client模式, Password模式用于控制用户的登录,Client模式用于控制后端服务相互调用. 权限架构调整后在近期发现一些问题,由于网上资料不多,只能单步调试方式看源码 (其实带着问题看源码是最

Spring Security OAuth2 Demo -- good

1. 添加依赖授权服务是基于Spring Security的,因此需要在项目中引入两个依赖: <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-security</artifactId> </dependency> <dependency> <groupId>org.springf

Spring Security OAuth2 开发指南。

官方原文:http://projects.spring.io/spring-security-oauth/docs/oauth2.html 翻译及修改补充:Alex Liao. Spring OAuth2.0 提供者实现原理: Spring OAuth2.0提供者实际上分为: 授权服务 Authorization Service. 资源服务 Resource Service. 虽然这两个提供者有时候可能存在同一个应用程序中,但在Spring Security OAuth中你可以把 他它们各自放在

Spring Security OAuth2 Demo —— 密码模式(Password)

前情回顾 前几节分享了OAuth2的流程与授权码模式和隐式授权模式两种的Demo,我们了解到授权码模式是OAuth2四种模式流程最复杂模式,复杂程度由大至小:授权码模式 > 隐式授权模式 > 密码模式 > 客户端模式 其中密码模式的流程是:让用户填写表单提交到授权服务器,表单中包含用户的用户名.密码.客户端的id和密钥的加密串,授权服务器先解析并校验客户端信息,然后校验用户信息,完全通过返回access_token,否则默认都是401 http状态码,提示未授权无法访问 本文目标 编写与

Spring Security OAuth2 Demo —— 客户端模式(ClientCredentials)

前情回顾 前几节分享了OAuth2的流程与其它三种授权模式,这几种授权模式复杂程度由大至小:授权码模式 > 隐式授权模式 > 密码模式 > 客户端模式 本文要讲的是最后一种也是最简单的模式:客户端模式 其中客户端模式的流程是:客户端使用授权服器给的标识与secret访问资源服务器获取token 本文目标 编写与说明密码模式的Spring Security Oauth2的demo实现,让未了解过相关知识的读者对客户端模式授权流程有个更直观的概念 以下分成授权服务器与资源服务器分别进行解释,

Spring Security OAuth2

Spring Security OAuth2 标签(空格分隔): Spring 1. oAuth(Open Authorization) OAuth协议为用户资源的授权(增删改查)提供了一个安全, 开放而又简易的标准. 和以往授权方式不同之处是oAuth的授权不会使第三方触及到用户的账号信息. 即第三方无需使用用户的用户名和密码就可以申请获得该用户的资源授权. 因此oAuth本身第安全是无害的. 2. Spring Security Spring Security是一个安全框架, 可以为Spri

spring security oauth2 jwt 认证和资源分离的配置文件(java类配置版)

最近再学习spring security oauth2.下载了官方的例子sparklr2和tonr2进行学习.但是例子里包含的东西太多,不知道最简单最主要的配置有哪些.所以决定自己尝试搭建简单版本的例子.学习的过程中搭建了认证和资源在一个工程的例子,将token存储在数据库的例子等等 .最后做了这个认证和资源分离的jwt tokens版本.网上找了一些可用的代码然后做了一个整理, 同时测试了哪些代码是必须的.可能仍有一些不必要的代码在,欢迎大家赐教. 一.创建三个spring boot 工程,分