原文:https://www.yuque.com/yuejiangliu/dotnet/yooglh


(29.5 MB)

OpenID Connect 是身份认证协议(OAuth 2.0 不是)。

Q:什么是身份认证?

码)给应用程序来证明这一点。


身份认证 vs 授权

  • 身份认证 Authentication
  • 授权 Authorization

。可以使用巧克力作为主要原料做出巧克力口味的糖果,但是巧克力和软糖绝不是等价的。

尽管巧克力可以单独作为一种最终产品,但在这个比喻里巧克力是一种非常有用原料,它极具多样性,可以用来做蛋糕、冰激凌、雪糕、糖果等等。

OpenID Connect 基于 OAuth 2.0,在此之上,它添加了一些组件来提供身份认证的能力。


OAuth 2.0。


OAuth 2.0 与身份认证协议的角色映射

03 选看 OpenID Connect 简介

上半部分是 OAuth 2.0 的角色,下半部分是身份认证协议的角色。

Q:为什么不使用 OAuth 2.0 的 Acess Token 来解决身份认证的问题?

A:

  • Access Token 不含有身份认证的信息
  • Access Token 的生命周期有可能会很长,即使用户离开了,它仍然有效
  • Access Token 可能被其它客户端借用
  • Access Token 本来也不是为客户端准备的,它对客户端不透明,但是客户端可以从 Access Token 里得到一些用户信息。Access Token 的真正目标观众是被保护资源

OpenID Connect 关键点

  • ID Token
  • 包含身份认证信息
  • 和 Access Token 一同发回给客户端应用
  • Userlnfo 端点:包含用户信息
  • 提供一组标识身份的 scopes 和 claims:
  • profile
  • email
  • address
  • phone

流程图:

03 选看 OpenID Connect 简介

  • RP:Relying Party 依赖方/客户端应用
  • OP:OpenID Provider OpenID 提供商
  • Authorization Code Flow
  • Implicit Flow

这几个流程的具体区别和使用,课程后期结合代码实例阐述。

相关文章: