概念理解

Scope

范围,它的定义比较宽泛,可大可小。
大到可把多个包含相同Scope的站点或服务形成一个虚拟的组,也可以是站点或服务的子级;小到身份所需要包含的信息,以精确出哪种身份。

Client

用户将要使用的客户端;如:PC端、移动端、小程序、商家app、购物app、管理员app等
客户端包含了标识、授权方式、密钥、指定的范围等信息。

客户端请求样例:

[统一认证授权服务]中存放了多种Client,请求[统一认证授权服务]时附带的参数表明是哪个Client的请求,[统一认证授权服务]验证是否存在的Client。

Client.Scope

客户端指定的支持范围(能匹配到的服务 + 可取得的身份信息)
认证授权后的Token = 可访问的服务 + 已认证的用户信息。

Claim

用户信息属性,描述身份信息的元素;
如:姓名的Claim对象、手机的Claim对象,部门角色等的众多对象 存于 IssuedClaims 中。

ApiResource

资源的定义,可认为是一个站点或一个后台服务等,也就是可被授权访问的服务,如:产品服务、订单服务

ApiResource.Scope

Client通过参数Scope可关联到的ApiResource

ApiResource.UserClaims

访问服务时,Token中要求必须有的用户信息(服务的个性化要求)

IdentityResource

认证后的身份信息,主要定义关于身份的描述,身份中的Claim包含了比较完整的用户(身份)信息,数据取自于 IssuedClaims,于Token中附带;如:OpenID、profile(姓名、性别、账号、电话等)、email、地址等,可按情况自定义追加

运行前提

  • Client 客户端的数据源
  • IdentityResource 身份结构的定义
  • ApiResource 的数据源
  • Scope 的数据源
  • UserClaims 用户信息数据源

运行过程

1、请求认证授权的主要参数:客户端标识、用户凭证、授权方式、密钥Secret、范围Scope

2、验证客户端是否存在

3、验证Scope关联到的身份是否存在

4、验证Scope关联到的ApiResource是否存在

5、验证Scope是否已定义

6、验证账户信息

7、账户信息通过Claim组合成Principal成为Identity合法身份

8、通过Scope参数,关联到的ApiResource + 关联到已认证的身份信息 => 生成Token

符合Scope参数的ApiResource,符合Scope参数的身份,

此Token就可以访问一个或多个服务(范围)及附带的用户信息。

请求参数Scope关联到的ApiResource + 请求参数Scope关联到的Claim => 生成 Token

相当于:要授权的ApiResource + 认证后的Claim信息 => 生成Token

也相当于:Token => 可访问的ApiResource服务 + 取已认证的用户身份信息

授权认证过程示例图

最新文章

  1. Python 之旅
  2. 从输入 URL 到浏览器接收的过程中发生了什么事情
  3. AngularJS快速入门指南03:表达式
  4. 2015年9月28日html基础了解学习
  5. mysql 分区和集群
  6. java枚举类型举例(基础)
  7. latex 双引号 “
  8. SharePoint PowerShell 启动工作流
  9. (转载)intellj idea 如何设置类头注释和方法注释
  10. Asp.net core 学习笔记 ( Smtp and Razor template 电子邮件和 Razor 模板 )
  11. java中字符串的排序(1)
  12. MT【229】最小值函数
  13. 版本视图找不到数据 EDITIONING VIEW
  14. VMware下centos桥接模式静态ip配置
  15. fdisk mkfs blkid fstab
  16. kubeadm源码修改证书时间 -1.13
  17. java 证书体系及应用,自已做https证书
  18. 利用pushState开发无刷页面切换(转)
  19. <NET CLR via c# 第4版>笔记 第9章 参数
  20. javascript中Function与Object

热门文章

  1. 支持 Java 8/11/17/19 的框架,Solon v1.10.5 版本发布
  2. Azure DevOps Pipelines部署.Net Core 应用到Kubernetes
  3. 20220729 - DP训练 #2
  4. grpc错误处理
  5. 8.pygame-定时器
  6. Java 编码那些事(一)
  7. vue-axios删除操作
  8. 用 VS Code 搞 Qt6:让信号和槽自动建立连接
  9. WebSocket心跳检测和重连机制
  10. EdgeCore初学习