在前两篇文章中,我们介绍了 OIDC 授权码以及授权码增强的 PKCE 模式,本次我们将重点围绕 模式进行讲解 ,Client Credentials 模式是 OIDC 授权模式之一,它是一种用于客户端以自己的名义向 OIDC 服务端获取访问令牌的认证授权模式,常用于保护 API 或物联网场景。
理论OAuth是一个关于授权(authorization)的开放网络标准,用来授权第三方应用获取用户数据,是目前最流行的授权机制,它当前的版本是2.0。应用场景假如你正在“网站A”上冲浪,看到一篇帖子表示非常喜欢,当你情不自禁的想要点赞时,它会提示你进行登录操作。
OAuth协议始于2006年Twitter公司OpenID项目,该公司的一位合作伙伴希望通过OpenID来实现委派认证,在经过研究后他们发现还没有一项关于API委派访问的开放标准,于是他们在2006年成立了OAuth讨论组,并且在当年的12月就发布了OAuth1.0协议。
我知道很多开发者习惯于不论什么情况,都返回 200 ,然后在 HTTP Response Entity-Body 中的 JSON 报文里添加一个状态字段,但在本接口里,是通过 HTTP Status 来表达错误的,请一定注意这一点。
我们在平时的API接口开发中,经常会接触到“ OAuth2.0 ”这个概念,但是很多小白总是搞不清楚code,state,access_token,refresh这些内部概念及其设计原理,甚至是在查阅了很多资料之后仍然是云山雾罩。
Oauth2.0是目前流行的授权机制,用于授权第三方应用,获取数据。和以往授权不同的是Oauth不会使第三方触及到用户的账号信息,也就是说第三方不需要使用用户的用户名和密码就可以获取到该用户的用户资源权限。
目前我们了解最多的是Spring Security OAuth对OAuth2协议的实现和支持,这里需要区分Spring Security OAuth和Spring Security是两个项目,过去OAth2相关功能都在Spring Security OAuth项目中实现,但是自SpringSecurity5.X开始,SpringSecurity项目开始逐渐增加Spring Security OAuth中的功能,自SpringSecurity5.2开始,添加了OAuth 2.0 登录, 客户端, 资源服务器的功能。