zoukankan      html  css  js  c++  java
  • 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 与身份认证协议的角色映射

    image.png

    上半部分是 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

    流程图:

    image.png

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

    四、OpenID Connect 三个流程(Flow)

    • Authorization Code Flow
    • Implicit Flow
    • Hybrid Flow

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

  • 相关阅读:
    Python—设计模式
    Python—操作系统和多线程
    thin mission 2021 11 3
    搜索
    c++ 调试
    Lecture--words families
    高数--积分
    thin mission 2021.11.2
    tiny mission 2021.11.1
    zlib使用心得
  • 原文地址:https://www.cnblogs.com/springsnow/p/13879510.html
Copyright © 2011-2022 走看看