https://www.yuque.com/yuejiangliu/dotnet/cg95ni


代表资源所有者的凭据

授权 Authorization Grant

授权是一个代表着资源所有者权限的凭据,它可以被客户端应用来获取 Access Token。

OAuth 2.0 里面定义了 4 种类型的授权,分别是:

  1. Auhtorization Code 授权码
  2. Implicit
  3. Resource Owner Password Credentials
  4. Client Credentials

OAuth 2.0 还定义了一个扩展机制以便自定义其它的授权类型。

用一句话描述“授权(Authorization Grant)就是获取 Token 的方法”。

  • Authorization Code
    • 使用授权服务器作为客户端和资源所有者的中介
    • 在授权服务器把资源所有者送回(重定向)到客户端的时候带着这个临时的凭据 Authorization Code。它就代表着资源所有者委托给客户端应用的权限
    • 在安全方面的一些优点:
      • 可以对客户端应用进行身份认证
      • Access Token 直接发送到客户端应用,不经过资源所有者的浏览器,所以不会将其暴露给外界,包括资源所有者
    • 适合 ASP.NET Core MVC 这类服务器端的客户端应用
      • Access Token 直接发送到 Web Server,不经过用户浏览器,不会暴露 Access Token
  • Implicit
    • Authorization Code 的简化版本
    • 针对浏览器内的客户端应用,例如 Angular SPA
    • 没有授权码发回给客户端应用的步骤,授权服务器直接把 Access Token 发回给了客户端应用,所以在浏览器内能获取到 Access Token
    • Implicit 授权确实可以提高浏览器内应用的响应性和效率,毕竟它减少了往返的次数。但是方便可能会带来风险,推荐尽量使用 Authorization Code
  • Resource Owner Password Credentials
    • 直接使用用户的密码作为授权来获得 Access Token
    • 仅当用户和客户端间高度信任且其他授权方式不可用时才可以使用这种授权方式
    • 这种凭据只应用于一次请求并用于交换 Access Token,避免客户端存储用户的凭据(密码)
      • 通过交换一个长期有效的 Access Token 或使用 Refresh Token都可以达到这种效果
  • Client Credentials
    • 受保护资源并不属于任意一个用户(没有用户对该资源负责),但客户端任需访问受保护资源
  • Device Code
  • Refresh Token
    • 通常能从授权服务器获得两个令牌:Access Token 和 Refresh Token
    • 当 Access Token 要过期时,我们使用 Refresh Token 再获取一个 Access Token

Identity Server 4 原理和实战(完结)_----选看 OAuth 2.0 简介(上)的更多相关文章

  1. Identity Server 4 原理和实战(完结)_----选看 OAuth 2.0 简介(下)

    https://www.yuque.com/yuejiangliu/dotnet/asu0b9 端点 Endpoint Authorization Endpoint,授权端点 在浏览器里面和用户交互 ...

  2. Identity Server 4 原理和实战(完结)_汇总贴

    视频地址:https://www.bilibili.com/video/av42364337 语雀地址:https://www.yuque.com/yuejiangliu/dotnet/solenov ...

  3. Identity Server 4 原理和实战(完结)_建立Identity Server 4项目,Client Credentials 授权实例

    创建项目 dotnet new -i IdentityServer4.Templates 多出来的这些模板 adminUI用来测试,想要用再生产环境,需要交钱 结合core的 Identity来使用 ...

  4. Identity Server 4 原理和实战(完结)_Authorization Code Flow 实例

    Code在Oauth2.0和OpenId Connect里面分别叫做不同的名字 OAuth只介绍了如何授权.没有介绍如何身份认证. OpenId Connect:既规定了怎么授权,也规定了怎么身份认证 ...

  5. Identity Server 4 原理和实战(完结)_----选看 OpenId Connect 简介

    Identity Procider:身份提供商

  6. Identity Server 4 原理和实战(完结)_单点登录实例(添加Flask客户端,Express.js的API)

    idp授权资源的添加 如果下面哪个客户端想访问api2这个资源的话 就把它写上scope里面就可以了 nodeJS的客户端 python的库 MVC客户端分别访问API和API2 python客户端演 ...

  7. Identity Server 4 原理和实战(完结)_建立Angular 客户端

    https://material.angular.io/ 第一部是安装angular cli --prefix=ac:前缀 --routing:默认使用路由 style=scss:样式使用scss - ...

  8. Identity Server 4 原理和实战(完结)_为 MVC 客户端刷新 Token

    服务端修改token的过期使劲为60秒 过期了 仍然还能获取到api1的资源 api1,设置每隔一分钟就验证token 并且要求token必须要有超时时间这个参数, 1分钟后提示超时,两边都是一分钟, ...

  9. Identity Server 4 原理和实战(完结)_Hybrid Flow 实例, Claims, 角色授权和策略授权

    4分50 建立客户端 不需要身份认证 客户端叫做HybirdClient 配置IdentityServer服务端,先把客户端添加上 把userClaims添加到token里面 然后运行服务端就可以了 ...

随机推荐

  1. FastDFS的配置、部署与API使用解读(5)FastDFS配置详解之Tracker配置(转)

    本文是 tracker.conf 配置文件的详细介绍. 1 基本配置 disable #func:配置是否生效 #valu:true.false disable=false bind_addr #fu ...

  2. Python实战之自己主动化评论

    Python实战之自己主动化评论 玩csdn博客一个多月了,渐渐发现了一些有意思的事,常常会有人用相同的评论到处刷.不知道是为了加没什么用的积分,还是纯粹为了表达楼主好人.那么问题来了,这种无聊的事情 ...

  3. adb的经常使用命令(android debud bridge)

    android调试桥: adb命令使用须要在系统环境遍历中path中追加adb.exe的完整路径D:\IDE\adt-bundle-windows-x86-20130729\sdk\platform- ...

  4. ubuntu 12.04改变源(转载)

    来源:http://blog.ubuntusoft.com/ubuntu-update-source.html#.Uq_PP9KBmxh 其它版本的修改方式相识.尽量使用原生工具来修改(见下方). 手 ...

  5. gcc參数总结

    /*gcc 命令总结*/ 补充下gcc的知识,免得被大自然说编译原理不行.. 1.-o 參数 參数说明: -o參数用来指定生成程序的名字 gcc test.c 会编译出一个名为a.out的程序 gcc ...

  6. React Native 学习(三)之 FlexBox 布局

    React Native 学习(三)之 FlexBox 布局

  7. JavaScript全讲-必知的特性

    上篇讲完JS面向对象的特性,我们今天就来聊聊它的其它特性. JS面向对象的特性较为隐晦,真正使用也是比較少的.而今天我们要讲的,却是在实际开发中常常遇到的特性. 1. 函数式编程 多数人并不知道&qu ...

  8. memcached和一致性hash算法

    1 一致性hash算法的一致性 这里的一致性指的是该算法可以保持memcached和数据库中的数据的一致性. 2 什么是一致性hash算法 2.1 为什么需要一致性hash算法 现在有大量的key v ...

  9. BZOJ3231: [Sdoi2008]递归数列

    BZOJ3231: [Sdoi2008]递归数列 Description 一个由自然数组成的数列按下式定义: 对于i <= k:ai = bi 对于i > k: ai = c1ai-1 + ...

  10. Linux就该这么学--命令集合8(命令行通配符)

    1.查看sda开头的所有设备文件: ls /dev/sda* 2.查看sda后面只有一个字符的设备文件: ls /dev/sda? 3.查看sda后面包含0-9数字的设备文件: ls /dev/sda ...