SpringSecurity之Oauth2介绍

这篇具有很好参考价值的文章主要介绍了SpringSecurity之Oauth2介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Oauth2认证的简单介绍

简介

第三方认证技术方案最主要是解决认证协议的通用标准问题,因为要实现跨系统认证,各系统之间要遵循一定的接口协议。

OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。同时,任何第三方都可以使用OAUTH认证服务,任何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。

业界提供了OAUTH的多种实现如PHP、JavaScript、Java,Ruby等各种语言开发包,大大节约了程序员的时间,因而OAUTH是简易的。

互联网很多服务如Open APl,很多大公司如Google, Yahoo, Microsoft等都提供了OAUTH认证服务,这些都足以说明OAUTH标准逐渐成为开放资源授权的标准。

Oauth协议目前发展到2.0版本,1.0版本过于复杂,2.0版本已得到广泛应用。

Oauth 协议:RFC 6749 - The OAuth 2.0 Authorization Framework (ietf.org)

去年面过一家北京公司开发实习岗位,Authing 是什么 | Authing 文档,是个凉面,它好像也是做这个的。

应用场景

下边分析一个Oauth2认证的例子,网站使用微信认证的过程:

SpringSecurity之Oauth2介绍
  1. 用户进入网站的登陆界面,点击微信图标以微信账号登陆,该系统,用户是自己在微信里信息的资源拥有者。
SpringSecurity之Oauth2介绍

点击微信弹出一个二维码,此时用户扫描二维码,开始给网站授权。

SpringSecurity之Oauth2介绍
  1. 资源拥有者同意给客户端授权

资源拥有者扫描二维码表示资源拥有者同意给客户端授权,微信会对资源拥有者的身份进行验证,验证通过后,微信会询问用户是否给授权网站访问自己的微信数据,用户点击'确认登录"表示同意授权,微信认证服务器会颁发个授权码,并重定向会网站。

SpringSecurity之Oauth2介绍
  1. 客户端获取到授权码,请求认证服务器申请令牌

此过程用户看不到,客户端应用程序请求认证服务器,请求携带授权码。

  1. 认证服务器向客户端响应令牌

认证服务器验证了客户端请求的授权码,如果合法则给客户端颁发令牌,令牌是客户端访问资源的通行证。此交互过程用户看不到,当客户端拿到令牌后,用户在网站看到已经登录成功,

SpringSecurity之Oauth2介绍

  1. 客户端请求资源服务器的资源

客户端携带令牌访问资源服务器的资源。网站携带令牌请求访问微信服务器获取用户的基本信息

  1. 资源服务器返回受保护资源

资源服务器校验令牌的合法性,如果合法则向用户响应资源信息内容。

注意:资源服务器和认证服务器也可以是统一个服务器,也可以是分开的服务器。如果是分开的服务器通常要求认证服务器来校验令牌的合法性。

SpringSecurity之Oauth2介绍

角色

客户端

客户端本身不存储任何的资源,需要通过资源拥有者的授权去请求资源服务器的资源,比如:Andriod客户端、IOS客户端、浏览器端、微信客户端。

资源拥有者

通常为用户,也可以是应用程序,既该资源的拥有者。

授权服务器(认证服务器)

用来对资源拥有者的身份进行认证、对访问资源进行授权。客户端要想访问资源需要通过认证服务器由资源拥有者授权后可访问。

常用术语

  1. 客户凭证 (client Credentials): 客户端的ClientID和密码用于认证客户。
  2. 令牌(tokens): 授权服务器在接受到用户的请求后,颁发的访问令牌
  3. 作用域(scopes): 客户请求访问令牌时,由资源拥有者额外制定的细分权限。

常用令牌

  • 授权码:仅用于授权码授权类型,用于交换获取访问令牌和刷新令牌
  • 访问令牌:用于代表一个用户或服务直接去访问受保护的资源
  • 刷新令牌:用于去授权服务器获取一个刷新访问令牌
  • BearerToken :不管谁拿到Token都可以访问资源,类似现金
  • Proof of Possession (Pop) Token:可以校验 client 是否对Token有明确的拥有权

特点

优点

  • 更安全,客户端不接触用户密码,服务器端更易集中保护
  • 广泛传播并被持续采用
  • 短寿命和封装的token
  • 资源服务器和授杈服务器解耦
  • 集中式授权,简化客户端
  • HTTP/JSON友好,易于请求和传递token
  • 考虑多种客户端架构场景
  • 客户可以具有不同的信任级别

缺点

  • 协议框架太竞泛,造成各种实现的兼容性和互操作性差
  • 只是一个认证协议,本身并不能告诉你任何用户信息。

授权模式

授权码模式

SpringSecurity之Oauth2介绍

简化授权码模式

SpringSecurity之Oauth2介绍

密码模式

SpringSecurity之Oauth2介绍

客户端模式

SpringSecurity之Oauth2介绍

刷新令牌

SpringSecurity之Oauth2介绍

SpringSecurity Oauth2

授权服务器

SpringSecurity之Oauth2介绍
  • Authorize Endpoint :授权端点,进行授权
  • Token Endpoint :令牌端点,进过授权拿到对应的Token
  • Introspection Endpoint:校验端点,校验Token的合法性
  • Revocat ion Endpoint :撤销端点,撒销授权

SpringSecurity Oauth2的架构

SpringSecurity之Oauth2介绍

流程

  1. 用户访问,此时没有Token。Oauth2RestTemplate会报错,这个报错信息会被Oauth2ClientContextFiter捕获。并重定向到认证服务器

  2. 认证服务器通过Authorization Endpoint进行授权,并通过AuthorizationServerTokenServices生成授权码并返回给客户端。

  3. 客户端拿到授权码去认证服务器通过Token Endpoint调用AuthorizationServerTokenServices生成Token并返回给客户端。

SpringBoot整合SpringSecurity Oauth2

实现授权码模式

代码和测试文档

https://github.com/bearbrick0/SpringSecurityOauth2_demo

实现密码模式

代码和测试文档

https://github.com/bearbrick0/Oauth_password_demo文章来源地址https://www.toymoban.com/news/detail-407463.html

到了这里,关于SpringSecurity之Oauth2介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 认证服务---OAuth2.0基本介绍,微博登录整合到实际项目中【下篇】

    上一篇简单介绍了它的基本使用,这一篇就粗略说明一下如何在项目中实际应用 当你进行了授权之后,跳转到一个新的地址。这个地址应该是你访问接口的地址。在这个接口中完成相应的access_token获取,以及调用远程服务接口实现新用户注册 具体业务实现 1、选择登录方式,

    2023年04月12日
    浏览(32)
  • SpringSecurity+OAuth2.0

    OAuth(Open Authorization)是一个关于授权(authorization)的开放网络标准,允许用户授权第三方应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容。OAuth 在全世界得到广泛应用,目前的版本是 2.0 版。 简单

    2024年02月13日
    浏览(38)
  • SpringSecurity+Oauth2+JWT

    快速入门 1. 创建基础项目 file == new == project == Spring Initializr ==next == web(Spring Web)、Security(Spring Security) ==一直下一步 2. 编写代码进行测试 创建controller static下创建login.html、main.html 3. 启动项目进行测试 访问http://localhost:8080/login.html 会进入SpringSecurity框架自带的登入页面 用户默认

    2024年02月12日
    浏览(42)
  • SpringSecurity +oauth2获取当前登录用户(二)

    特别注意:以下内容如果访问失败或有其他疑问,可先学习: SpringSecurity +oauth2+JWT实现统一授权和认证及项目搭建(一) 1 获取当前用户的信息代码为: 但是,通过运行会发现principal的值只是 用户名 ,没有用户信息,通过去看源码,才发现问题所在,以下是源码: 源码类:

    2023年04月12日
    浏览(47)
  • SpringSecurity+ Oauth2.0+JWT 0-1

    AuthorizationServer 需要继承AuthorizationServerConfigurerAdapter AuthorizationServerConfigurerAdapter源码 AuthorizationServerSecurityConfigurer:配置令牌端点(Token Endpoint)的安全约束 ClientDetailsServiceConfigurer:配置OAuth2客户端 AuthorizationServerEndpointsConfigurer:配置授权(authorization)以及令牌(token)的访

    2024年02月07日
    浏览(46)
  • SpringSecurity OAuth2 配置 token有效时长

    1.这种方式配置之后,并没有生效 2.第二种方法时改数据库的配置,测试配置有效

    2024年02月09日
    浏览(48)
  • springboot整合springsecurity+oauth2.0密码授权模式

    本文采用的springboot去整合springsecurity,采用oauth2.0授权认证,使用jwt对token增强。本文仅为学习记录,如有不足多谢提出。 OAuth 2.0是用于授权的行业标准协议。OAuth 2.0为简化客户端开发提供了特定的授权流,包括Web应用、桌面应用、移动端应用等。 Resource owner(资源拥有者)

    2024年02月04日
    浏览(57)
  • 权限管理 springboot集成springSecurity Oauth2 JWT

    目录 一、SpringSeurity的基础操作 1、引入主要依赖 2、加密器 3、实现自定义登录逻辑 4、访问限制 5、自定义异常处理  6、通过注解的方式配置访问控制 二、Auth2认证方案 1、什么是Auth2认证 2、Oauth2最常用的授权模式  3、依赖引入 4、添加配置类 5、测试 6、存在到Redis里,后续

    2023年04月14日
    浏览(40)
  • 五、SpringSecurity OAuth2扩展手机验证码授权模式

    代码仓库:地址 代码分支:lesson5 在上一篇文章中,我们使用SpringSecurity OAuth2搭建了一套授权服务,对业务系统进行统一授权管理。OAuth提供了四种授权方式: 授权码模式(authorization_code) 简化模式(implicit) 客户端(client_credentials) 密码(password) 在实际业务中上述四种模式不

    2024年02月11日
    浏览(54)
  • 微服务鉴权中心之网关配置SpringSecurity+oauth2

    微服务鉴权中心流程如下: 1. 网关配置oauth2之 TokenStore存储方式,此处用 RedisTokenStore 2.网关配置security 3.网关拦截token

    2024年02月14日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包