spring-authorization-server系列--Oauth介绍

一、Oauth简介

1、什么是Oauth

        OAuth 不是一个 API 或者服务,而是一种开放的授权协议,用于允许 web、移动和桌面应用程序以简单和标准的方法进行安全授权。即:OAuth 关注的是 Authorization(授权)的层面(即“What”),而不是 Authentication(认证)的层面。

2、Oauth解决的问题

        在传统的授权领域中,第三方应用请求用户的受保护的资源时,服务端会通过使用用户的账密凭证在服务器上进行身份验证(HTTP Basic Authentication),以便为第三方应用程序提供访问权限,这也就进一步要求用户与第三方应用之间共享授权凭证。

        譬如,两个完全独立的第三方应用和主应用,按照传统的解决方案,当第三方应用要访问主应用的受保护的用户资源时,就有必要在第三方应用中用凭证兑换出主应用的token(如:账号密码),然后通过token访问主应用的受保护资源。这样子无疑会造成一些问题:

(1)主应用的用户凭证经过了第三方应用,信息极其容易造成由于第三方应用的安全问题导致用户数据的大批量泄露。

(2)主应用可以访问主应用中用户所有受保护的资源,而用户无法对资源进行精细化的控制

(3)如果想要撤销第三方应用的对用户资源的访问权限,只能修改凭证

        OAuth 的出现,就是解决双方应用只能通过暴露凭证去授权获取用户数据的一种方案,在第三方应用和主应用之间引入了一个授权层来解决这些问题。要求第三方应用不能直接登录服务提供方,只能先登录授权层,获取到授权层颁发的访问令牌,然后通过这个令牌才能获取到相应权限的资源(并非全部资源)。

二、Oauth协议演进

1、Oauth1.0(2007~2012)

        OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。简单来说就是提供除了"账户密码"验证方式以外的验证授权方式。

认证流程:

(1)接入者向服务提供商申请Request Token;
(2)接入者引导用户到服务提供商处授权请求;
(3)用户授权;
(4)服务提供商将用户重定向回接入者的网站,并带回授权过的Request Token;
(5)接入者使用Request Token向服务提供商交换Access Token;
(6)接入者通过Access Token访问用户在服务提供商处存储的受保护的资源;

2、Oauth2.0(2021~2022)

        在OAuth 2.0的认证和授权的过程中主要包括以下角色定义:

  • Resource owner: 资源所有者(通常指用户或者提供资源服务的平台)
  • Resource server:资源服务器(托管受保护资源的服务器)
  • Client:客户端(浏览器、APP)
  • Authorization server:授权服务器(颁发访问令牌、验证令牌、刷新令牌)

        在OAuth 2.0主要有4中模式

(1)授权码(authorization-code)

(A)用户访问客户端,后者将前者导向授权服务器。
(B)用户选择是否给予客户端授权。
(C)假设用户给予授权,授权服务器将用户导向客户端事先指定的"重定向URI"(redirection URI),同时附上一个授权码。
(D)客户端收到授权码,附上早先的"重定向URI",向授权服务器申请令牌。这一步是在客户端的后台的服务器上完成的,对用户不可见。
(E)授权服务器核对了授权码和重定向URI,确认无误后,向客户端发送访问令牌(access token)和更新令牌(refreshtoken)。

(2)隐藏式(implicit)

(A)客户端将用户导向授权服务器。
(B)用户决定是否给于客户端授权。
(C)假设用户给予授权,授权服务器将用户导向客户端指定的"重定向URI",并在URI的Hash部分包含了访问令牌。
(D)浏览器向资源服务器发出请求,其中不包括上一步收到的Hash值。
(E)资源服务器返回一个网页,其中包含的代码可以获取Hash值中的令牌。
(F)浏览器执行上一步获得的脚本,提取出令牌。
(G)浏览器将令牌发给客户端。 

(3)密码式(password)

(A)用户向客户端提供用户名和密码。
(B)客户端将用户名和密码发给授权服务器,向后者请求令牌。
(C)授权服务器确认无误后,向客户端提供访问令牌。 

(4)客户端凭证(client credentials)

(A)客户端向授权服务器进行身份认证,并要求一个访问令牌。
(B)授权服务器确认无误后,向客户端提供访问令牌。

3、Oauth2.1(2022~今)

         Oauth2.1是在基于 OAuth 2.0 的基础上,增加了 OAuth 协议的健壮性和扩展性,不会包含任何被认为是实验性或者尚未落地的东西。

(1)授权码模式(同Oauth2.0)

(2)客户端模式(同Oauth2.0)

(3)设备授权模式

(A)客户端设备向认证服务器发起认证

(B)返回设备码、用户码、以及验证链接

(C)用户通过浏览器等输入用户码

(D)提交验证信息

(E)设备客户端轮询获取token

(F)如果用户提交的验证信息验证通过,返回给设备令牌(access_token和refresh_token) 

  • 20
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: spring-security-oauth2-authorization-server是一个基于Spring Security的OAuth2授权服务器,用于管理和授权访问受保护的资源。它提供了一组API和工具,使得开发人员可以轻松地实现OAuth2授权服务器,并支持多种授权方式和流程。该授权服务器可以与其他Spring框架集成,例如Spring Boot和Spring Cloud,以便更好地管理和保护应用程序的资源。 ### 回答2: Spring Security OAuth2 Authorization Server是一个强大的用户授权服务,它可以让用户安全地授权他们的敏感信息,以便客户端应用程序可以访问他们的资源。 它基于Spring的安全框架构建,与OAuth2协议规范兼容。OAuth2是一个授权协议,它允许用户授权客户端应用程序在用户的名义上访问他们的资源。Spring Security OAuth2 Authorization Server提供了多种授权模式,包括基于密码授权、刷新令牌和授权码授权等。 该服务还提供了一组API组件,使开发人员可以轻松地创建客户端应用程序并管理授权和令牌。通过使用Spring Security OAuth2 Authorization Server,开发人员可以保持持久的跨应用程序用户会话状态,并方便地跟踪和管理资源的访问。 Spring Security OAuth2 Authorization Server提供了一个安全的授权层,可以使用Token转义解决跨域请求的问题,支持多个授权模式,并支持动态客户端注册。此外,该服务还提供了一个管理界面,可用于管理授权信息、令牌和客户端应用程序的访问权限等。 最后,Spring Security OAuth2 Authorization Server还提供了一组可扩展的插件,可以通过它们扩展和定制授权流程和授权服务。这些插件可以轻松地扩展并与其他技术进行集成。 ### 回答3: Spring Security OAuth2 Authorization ServerSpring Security生态系统中的一个组件,是一种用于构建并管理OAuth2授权服务的框架。OAuth2是一种用于保护API、防止破坏攻击的开放标准,它提供了一种用于分离用户、应用程序和资源服务器之间的身份验证和授权的机制。它允许用户授权第三方应用程序访问他们在其他应用程序和服务上存储的服务。OAuth2授权服务是一个负责认证用户信息并授权访问令牌的服务器。 Spring Security OAuth2 Authorization Server提供一个开箱即用的OAuth2认证服务器,它提供了一些默认的配置和管理OAuth2令牌的选项。它还提供了一些简单和可扩展的API以支持OAuth2流程的不同阶段,从而帮助开发人员方便地创建和配置基于OAuth2的应用程序。 Spring Security OAuth2 Authorization Server的主要功能包括: 1. 提供一个可扩展的API,以便在不同的OAuth2流程阶段进行修改。 2. 附带默认的令牌存储实现。 3. 允许自定义授权和令牌端点。 4. 提供了可插拔的身份验证和授权机制,开发人员可以方便地配置和管理。 5. 允许开发人员创建和使用自定义的令牌存储实现。 6. 允许开发人员基于OAuth2协议为应用程序提供安全性。 总之,Spring Security OAuth2 Authorization Server为开发人员提供了一个可扩展的和可定制的OAuth2认证服务器,使得开发人员可以方便地构建基于OAuth2的应用程序。它简化了OAuth2认证的过程,帮助开发人员快速构建和部署安全且可靠的应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值