03 选看 OpenID Connect 简介
原文:https://www.yuque.com/yuejiangliu/dotnet/yooglh
03 选看 OpenID Connect 简介.mp4 (29.5 MB)
OpenID Connect 是身份认证协议(OAuth 2.0 不是)。
Q:什么是身份认证?
A:它可以告诉应用程序当前的用户是谁,还有这些用户是否正在使用你的应用程序。它是一种安全架构,它可以告诉你用户是他们所声明的身份。通常是通过提供一套安全凭据(例如用户名和密码)给应用程序来证明这一点。
一、身份认证 vs 授权
- 身份认证 Authentication
- 授权 Authorization
引用《OAuth 2.0 in Action》里面的一个比喻来解释。把身份认证看作是软糖,而授权是巧克力。这两种东西感觉略有相似,但是本质上却截然不同:巧克力是一种原料,而软糖是一种糖果。可以使用巧克力作为主要原料做出巧克力口味的糖果,但是巧克力和软糖绝不是等价的。
尽管巧克力可以单独作为一种最终产品,但在这个比喻里巧克力是一种非常有用原料,它极具多样性,可以用来做蛋糕、冰激凌、雪糕、糖果等等。
要制作巧克力软糖,也就是需要一个基于 OAuth 2.0(巧克力)的身份认证协议(软糖)。而 OpenlD Connect 就是这样的开放标准,它可以工作于不同的身份供应商之间。OpenID Connect 基于 OAuth 2.0,在此之上,它添加了一些组件来提供身份认证的能力。
OpenlD Connect 的官方定义:OpenlD Connect 是建立在 OAuth2.0 协议上的一个简单的身份标识层,OpenID Connect 兼容 OAuth 2.0。
二、OAuth 2.0 与身份认证协议的角色映射
上半部分是 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
- address
- phone
流程图:
- RP:Relying Party 依赖方/客户端应用
- OP:OpenID Provider OpenID 提供商
四、OpenID Connect 三个流程(Flow)
- Authorization Code Flow
- Implicit Flow
- Hybrid Flow
这几个流程的具体区别和使用,课程后期结合代码实例阐述。
posted on 2020-10-26 17:11 springsnow 阅读(420) 评论(0) 编辑 收藏 举报