09 | 实战:利用OAuth 2.0实现一个OpenID Connect用户身份认证协议

241 阅读1分钟

09 | 实战:利用OAuth 2.0实现一个OpenID Connect用户身份认证协议

OIDC

OIDC 其实就是一种用户身份认证的开放标准。使用微信账号登录极客时间的场景,就是这种开放标准的实践。
OIDC= 授权协议 + 身份认证。

OIDC 和 OAuth 2.0 的角色对应关系

OIDC 的三个主要角色

  1. EU(End User),代表最终用户。
  2. RP(Relying Party),代表认证服务的依赖方,就是上面我提到的第三方软件。
  3. OP(OpenID Provider),代表提供身份认证服务方。

image.png

OIDC 和 OAuth 2.0 的关键区别

image.png

单点登录

一个用户 G 要登录第三方软件 A,A 有三个子应用,域名分别是 a1.com、a2.com、a3.com。我们想让用户登录了a1.com之后,也可以直接使用a2,a3.com。这就是单点登录,“一次登录,畅通所有”
image.png

总结

  1. OAuth 2.0 不是一个身份认证协议。
  2. 有些 App 不想非常麻烦地自己设计一套注册和登录认证流程,就会寻求统一的解决方案,然后势必会出现一个平台来收揽所有类似的认证登录场景。我们再反过来理解也是成立的。如果有个拥有海量用户的、大流量的访问平台,来提供一套统一的登录认证服务,让其他第三方应用来对接,不就可以解决一个用户使用同一个账号来登录众多第三方 App 的问题了吗?而 OIDC,就是这样的登录认证场景的开放解决方案。

原文