一.简介
这篇文章来讲下Spring Security OAuth2 四种授权模式。
二.什么是OAuth2
OAuth 2.0 是一种用于授权的开放标准,允许用户授权第三方应用程序访问他们的资源,例如照片、视频或其他个人信息。OAuth 2.0 提供了一些不同的授权模式,包括授权码模式、简化模式、密码模式和客户端模式等。这些授权模式允许客户端应用程序在不要求用户提供其密码或其他敏感信息的情况下,安全地访问受保护资源。
OAuth 2.0 的核心思想是将认证和授权分离开来,允许用户授权一个应用程序代表他们执行某些操作。OAuth 2.0 框架中的主要角色包括:
用户:资源的所有者,可以授权应用程序访问他们的资源。客户端:请求访问资源的应用程序。授权服务器:处理 OAuth 2.0 协议,负责验证用户身份并生成访问令牌。资源服务器:存储受保护的资源,并根据授权服务器颁发的访问令牌控制对这些资源的访问。OAuth 2.0 在互联网应用程序开发中被广泛使用,大多数社交网络和 API 都支持该协议。它允许开发人员构建安全的应用程序,用户可以控制对其资源的访问权限。
三.OAuth2 的四种模式
3.1授权码模式(Authorization Code Grant)
3.1.1什么是授权码模式
授权码模式是 OAuth 2.0 的标准授权方式,常用于服务端应用程序,也适用于移动应用程序。该模式通过授权服务器为客户端生成一个授权码,在授权码的基础上请求访问令牌。
3.1.2授权流程
授权流程截图如下:
- 客户端向用户展示认证页面。
- 用户输入用户名和密码,向授权服务器发送请求。
- 授权服务器验证用户信息,如果验证成功,生成授权码。
- 授权服务器返回授权码给客户端。
- 客户端使用授权码向授权服务器请求令牌。
- 授权服务器验证授权码的有效性,如果有效则返回令牌。
3.2简化模式(Implicit Grant)
3.2.1什么是授权码模式
简化模式主要用于移动应用程序和 Web 前端应用程序等场景下。该模式省略了授权码这一步骤,直接通过浏览器在客户端和授权服务器之间进行交互。
3.2.2授权流程
授权流程截图如下:
- 客户端向授权服务器发送认证请求。
- 授权服务器验证用户身份,如果验证成功则向浏览器返回令牌。
- 浏览器将令牌传递给客户端。
3.3密码模式(Resource Owner Password Credentials Grant)
3.3.1什么是密码模式
密码模式是一种简单的授权方式,主要用于受信任的客户端应用程序。该模式要求用户将自己的用户名和密码直接提供给客户端应用程序,客户端应用程序使用这些凭证向授权服务器请求访问令牌。
3.3.2授权流程
授权流程截图如下:
- 用户向客户端提供用户名和密码。
- 客户端向授权服务器发送包含用户凭证的请求。
- 授权服务器验证用户凭证,如果验证成功则返回令牌。
3.4客户端模式(Client Credentials Grant)
3.4.1什么是客户端模式
客户端模式适用于后台服务与其他服务进行通信的场景。该模式下,客户端应用程序通过自身的身份向授权服务器请求访问令牌,并使用该令牌访问资源服务器。
3.4.2授权流程
授权流程截图如下:
- 客户端向授权服务器发送包含自身身份信息的请求,包括客户端 ID 和密钥。
- 授权服务器验证客户端身份,如果验证成功则返回令牌。
- 客户端使用令牌向资源服务器请求访问资源。
《肖申克的救赎》
生命可以归结为一种简单的选择:要么忙于生存,要么赶着去死。
懦怯囚禁人的灵魂,希望可以感受自由。强者自救,圣者渡人。
希望是件美丽的东西,也许是最好的东西。美好的东西是永远不会死的。
每个人都是自己的上帝。如果你自己都放弃自己了,还有谁会救你?
《熔炉》
我们一路奋战,不是为了能改变世界,而是为了不让世界改变我们。
现实如水母,看似美好无害实质总是致命伤人。
我们来到世界上,都是孤独的旅行,即使身边有人相伴,最终也会各奔东西!
世界上最美丽最珍贵的,反而是听不见且看不清的,只有用心才能感受得到。
《教父》
人可以不断犯错,但绝不能犯要命的错。
不要憎恨你的敌人,那会影响你的判断力。
人并非生来就伟大,而是越活越伟大。
《活着》
人是为了活着本身而活着,而不是为了活着之外的任何事物而活着。
以笑的方式哭,在死亡的伴随下活着。
没有什么比时间更具有说服力了,因为时间无需通知我们就可以改变一切。
你的命是爹娘给的,你不要命了也得先去问问他们。
《我不是药神》
世界上只有一种病,穷病,这种病你没法治,你也治不过来。
人间最高贵的是善良,是对生命的致敬。
《指环王》
把手握紧,里面什么也没有;把手放开,你得到的是一切。
我宁愿和你共度凡人短暂的一生,也不愿一个人看尽这世界的沧海桑田。
20.幸福的家庭都是相似的,不幸的家庭各有各的不幸。
或许有一天,人类变得萎缩懦弱,舍弃朋友,断绝友谊,但今天决不会这样。
《饮食男女》
22.人生不能像做菜,把所有的材料都准备好了才下锅。
什么叫做“可惜”啊,要心中有个“惜”字儿,才知道可惜。
其实一家人,住在一个屋檐下,照样可以各过各的日子,可是从心里产生的那种顾忌,才是一个家之所以为家的意义。
《让子弹飞》
世界上本没有路,有了腿便有了路。
如果你活着,早晚都会死;如果你死了,你就永远活着。
赚钱嘛,不寒碜
《被嫌弃的松子的一生》
小时候,谁都觉得自己的未来闪闪发光,不是吗?但是一旦长大,没有一件事会遂自己心愿。
要么伤心地长吁短叹,要么沉醉于悲伤中,要么草草的了结了一生,要么笑着搪塞过去,将错就错。
人的心灵是脆弱的,难以做到为自己恨的人祈祷。原谅不可原谅的人,并为之祈祷,这就是上帝的爱。
想要在这个世界上留下自己活过的证据,因为好不容易生而为人。
《美国往事》
不管何时何地,做你想做的事永远都不嫌晚 。
孤独并不可怕,可怕的是恐惧孤独。
你要一直不停地往前走,不然你不会知道生活还会给你什么。
《少年派的奇幻漂流》
这里必须说说恐惧,它是生活惟一真正的对手,因为只有恐惧才能打败生活。
人生就是不断的放下,但最遗憾的是,我们来不及好好告别!
如果我们在人生中体验的每一次转变都让我们在生活中走得更远,那么,我们就真正的体验到了生活想让我们体验的东西。
《罗生门》
沾沾自喜者只管自喜就是,但就别人说三道四则属多管闲事。
较之希望得到什么,我们更多是同"能够"得到什么达成妥协。
撒谎是人之本性,在大多数时间里我们甚至都不能对自己诚实。那是因为人们太脆弱了所以才撒谎,甚至是对自己撒谎。
《阿甘正传》
人生就像一盒巧克力,你永远不知道会尝到哪种滋味。
“你以后想成为什么样的人?”
“什么意思,难道我以后就不能成为我自己了吗?”
我不觉得人的心智成熟是越来越宽容涵盖,什么都可以接受。相反,我觉得那应该是一个逐渐剔除的过程,知道自己最重要的是什么,知道不重要的东西是什么。而后,做一个简单的人。
一个人真正需要的财富就那么一点点,其余的都是用来炫耀的。