OAuth2.0标准授权管理流程

Posted 程天写代码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OAuth2.0标准授权管理流程相关的知识,希望对你有一定的参考价值。

OAuth2.0是一套标准,不是某个具体的项目,用于做授权管理。实际上这一套标准是近些年在第三方登录领域广为应用的,如果你使用过“微信登录”、“微博登录”等快捷登录,在最开始,可能有人以为是使用了微信账号密码去做登录,实际上只是用微信账号生成的有效Token做注册、登录使用。


举个例子,京东的账号系统太操蛋了,更改个注册信息、变更手机号简直是天方夜谭,我不想用,我选择微信登录的手段,这个时候,就是微信生成了一个可信Token,确保用户身份的鉴别。在这个场景下,可以很清晰的看出,我们使用第三方登录的时候,一定要确保第三方是可靠的、安全的、信用的。毫无疑问,对于京东而言,微信是一个可靠的授权方。


OAuth出现的目的,是在客户端和服务端中间,提供一个授权层,客户端不直接访问服务端,只是依靠授权层的授权,消费服务端提供的带权服务。在微信-京东的例子中,京东相当于客户端,微信相当于服务端,在我们点击允许登录的过程中,相当于授权给京东获取我们在微信服务端一些用户信息资源的访问权限。


当然,这个授权并不是这么普遍长久,包括授权有效期和权限范围等,OAuth2.0实现了很精细化的权限管理和控制。


在Oauth2.0的模型中,一个授权-用权的流程大概是:


  • 客户端请求用户授权。

  • 用户同意客户端请求的权限。

  • 客户端向认证服务器请求上一步获取权限对应的令牌。

  • 认证服务器验证客户端是用户授权的客户端,发放特定令牌。

  • 客户端使用令牌,向服务器请求资源。

  • 资源服务器确定令牌无误后,向客户端发放资源。


Oauth2.0官方标准有四种授权认证模式:


  • 授权码模式

  • 简洁模式

  • 密码授权

  • 客户端直接请求资源


授权码模式是最严谨、最安全的标准流程,也是强调安全的大厂采用最多的授权模式。其一般流程为:


  • 用户访问客户端,客户端发现资源权限不够,把请求转发到第三方认证服务器。

  • 用户选择是否授权,这一步是安全的,在第三方服务器进行,一般不存在钓鱼欺骗。

  • 在上一步完成授权的前提下,认证服务器根据客户端要求重定向链接,把请求重定向到客户端要求的链接,并保存一个授权码。

  • 客户端使用授权码,以及保持前面使用的重定向链接,向认证服务器申请令牌

  • 认证服务器核对授权码和重定向链接,发放令牌。


简洁模式也很普遍,相对于授权码模式,只是取消了授权码这个环节,直接申请令牌,这样,整个过程都是对用户可见,不存在后台服务操作。


密码授权是一种存在高风险的授权模式,相当于把账号密码交给客户端,客户端可以获得完整的账户下权限。


客户端模式是一种很简陋的模式,一般适用于用户下资源开放度较高的场景,不存在授权环节,也是历史上获取资源的模式。


周末愉快!





以上是关于OAuth2.0标准授权管理流程的主要内容,如果未能解决你的问题,请参考以下文章

OAuth2.0认证和授权原理

oauth2.0的授权流程详解

OAuth2.0系列之授权码模式实践教程

OAuth2.0认证和授权原理

OAuth2.0认证和授权原理

使用 Keycloak 构建 Java OAuth2.0 授权服务器