本系列文章的思想,都融入了 让 Java 再次伟大 这个全新设计的脚手架产品中,欢迎大家使用。
授权与认证
上一章我们一直在反复阐述一个事实: OAuth2 协议是用来解决用户对软件授权的。为何要如此强调这个事实呢?因为授权、认证、单点登录非常容易被混淆。
用户认证是指证明自己的身份。认证有时候会和授权一起使用,就像你去酒店必须首先用身份证证明你的身份,酒店才会授予你使用酒店服务的权利一样。
OAuth2 与 OIDC
今天要介绍的是 OpenID connect 简称 OIDC 是一个关于第三方用户认证的标准化协议。这个协议是建立在我们之前介绍的 OAuth2.0 的基础上的。这又是一个容易混淆的地方:虽然授权和认证在语义上明显不同,但是他们却使用类似的协议来解决问题。还记得之前我们谈到过 OAuth2.0 是一个授权协议,但是他的功能不仅仅如此。OAuth 可以被用来解决任何问题,身份认证就是其中一种。
于是,基于 OAuth 2.0 的协议流程,第三方用户认证协议 OpenID connect 就被设计出来了。所以 OIDC 是 OAuth2.0 的超集,但是认证并不是授权的超集。
OIDC 授权码许可类型流程简介
是的,OIDC 也有两种常用类型:授权码许可类型与隐式许可类型。由于 OIDC 在 OAuth2.0 的基础上被设计出来,所以 OAuth2.0 的流程基本上就是 OIDC 的流程。
在 OIDC 的流程中,相对 OAuth2.0 有 3 个变化。
- 授权服务器 + 资源服务器 = 认证服务器。
- 根据授权码获取的 token 中包含 id_token。
- 用户详情可以使用 UserInfo 端点获取。
认证服务器的变化很容易理

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



