接下来我们在来看下AddJwtBearer,这个与AddOpenIdConnect不太一样,后者是远程发起身份认证请求是一种主动发起式的,多用于web等客户端,验证发生在身份认证服务端,而前者是一种被动接受,比如接受一个Token并根据某种规则校验,多用于服务性质的接口,而校验发生在服务本生

与前面一样,我们只关注JwtBearerHandler的处理即可

在JwtBearer中,我们可以通过自定义Token,并不一定需要接受来之Headers中 Authorization 中的 Bearer

先说第一种情况

 public virtual Task MessageReceived(MessageReceivedContext context) => OnMessageReceived(context);public virtual Task TokenValidated(TokenValidatedContext context) => OnTokenValidated(context);

我们重写JwtBearerEvents中的相关方法就可以指定我们自己的Token接受来源以及校验方式,这里需要注意的如果我们的服务需要跟对的用户身份信息的话还需要将需要的身份信息写入到token中以便于解析后写入到Principal身份信息中,最后在代码中处理业务

当然第二种方式就是通用的接受Headers中 Authorization 中的 Bearer,通过JwtBearer中的配置的信息SigningKeys、ValidIssuers 然后使用SecurityTokenValidators去读取Token信息,如果OK 那么同之前一样将身份信息写到 Principal,如果需要保存Token,这里采用的就是 Token信息写入到了 access_token 中,这里服务中如果需要得到这个access_token的话需要这样来处理

  string token = await httpContextAccessor.HttpContext.GetTokenAsync("access_token");

通过得到这个token,我们就可以在一个服务中去请求其他的服务

转载于:https://www.cnblogs.com/liyouming/p/10006434.html

.NetCore源码阅读笔记系列之Security (四) Authentication AddJwtBearer相关推荐

  1. .NetCore源码阅读笔记系列之Security (一) Authentication AddCookie

    如果你使用过.NetCore开发过程序,你会很清楚,在其中我们经常会用到一些如下的代码 services.AddAuthentication(options =>{options.Default ...

  2. CI框架源码阅读笔记4 引导文件CodeIgniter.php

    到了这里,终于进入CI框架的核心了.既然是"引导"文件,那么就是对用户的请求.参数等做相应的导向,让用户请求和数据流按照正确的线路各就各位.例如,用户的请求url: http:// ...

  3. syzkaller 源码阅读笔记1(syz-extract syz-sysgen)

    文章目录 1. syz-extract 1-0 总结 1-1. `main()` 1-2 `archList()` - `1-1 (3)` 获取架构 name list 1-3 `createArch ...

  4. Transformers包tokenizer.encode()方法源码阅读笔记

    Transformers包tokenizer.encode()方法源码阅读笔记_天才小呵呵的博客-CSDN博客_tokenizer.encode

  5. 源码阅读笔记 BiLSTM+CRF做NER任务 流程图

    源码阅读笔记 BiLSTM+CRF做NER任务(二) 源码地址:https://github.com/ZhixiuYe/NER-pytorch 本篇正式进入源码的阅读,按照流程顺序,一一解剖. 一.流 ...

  6. 代码分析:NASM源码阅读笔记

    NASM源码阅读笔记 NASM(Netwide Assembler)的使用文档和代码间的注释相当齐全,这给阅读源码 提供了很大的方便.按作者的说法,这是一个模块化的,可重用的x86汇编器, 而且能够被 ...

  7. Yii源码阅读笔记 - 日志组件

    2015-03-09 一 By youngsterxyf 使用 Yii框架为开发者提供两个静态方法进行日志记录: Yii::log($message, $level, $category); Yii: ...

  8. AQS源码阅读笔记(一)

    AQS源码阅读笔记 先看下这个类张非常重要的一个静态内部类Node.如下: static final class Node {//表示当前节点以共享模式等待锁static final Node SHA ...

  9. 【Flink】Flink 源码阅读笔记(20)- Flink 基于 Mailbox 的线程模型

    1.概述 转载:Flink 源码阅读笔记(20)- Flink 基于 Mailbox 的线程模型 相似文章:[Flink]Flink 基于 MailBox 实现的 StreamTask 线程模型 Fl ...

  10. 【Flink】Flink 源码阅读笔记(18)- Flink SQL 中的流和动态表

    1.概述 转载:Flink 源码阅读笔记(18)- Flink SQL 中的流和动态表

最新文章

  1. python程序执行时间
  2. c语言flash里能存文件吗,STM32内部FLASH打包读写
  3. hdu 4004 二分查找
  4. 1012 The Best Rank (25 分)【难度: 中 / 知识点: 排序 前缀和】
  5. Java虚拟机:深入详细分析Java ClassLoader原理与源码
  6. Boost:向上对齐align up integral的测试程序
  7. android控件使用大全,Android常见控件使用详解
  8. ubuntu系统下如何修改host
  9. 相关和因果是一回事吗?R值低就是不相关?终于有人讲明白了
  10. dll = MinGW gcc 生成动态链接库 dll 的一些问题汇总
  11. C#3.0入门系列(八)-之GroupBy操作
  12. Android通知学习
  13. 给小黑升级三星970EVOPlus固态硬盘手记(图文)
  14. 几何实体图形保存成stl格式的ascII和二进制文。用Vc++语言读入文件,给三角网格坐标值乘以2,并保存到另一stl文件。输出完成工作所用的执行时间
  15. doe五步法_实验设计(DOE)的七大步骤分析
  16. Carplay车载语音通讯测试(Vehicle Communication Terminals Test)
  17. 给Edge添加chrome主题
  18. 超市进销存管理系统(C#+SQL Server实现)C#窗体应用、数据库应用,生成可执行安装包程序
  19. qq邮箱里面html的图片无法显示,QQ邮箱如何不显示图片? QQ邮箱如何不显示图片?...
  20. 计算机组成原理第五章知识总结

热门文章

  1. 委托、事件--委托介绍篇
  2. 国外的程序员都是什么样的状态?硅谷程序员:不加班,不穿女装
  3. 【数据处理】reshape2包
  4. 时间序列分析工具箱——sweep
  5. CSDN发布:AI技术人才成长路线图
  6. 计算机应用课程的考核情况,《计算机应用技术》课程kpi考核说明..doc
  7. Egret入门学习日记 --- 第十九篇(书中 8.8~8.10 节 内容)
  8. mysql工具——mysqlcheck(MYISAM)
  9. matlab练习程序(对应点集配准的四元数法)
  10. 联通手机卡欠费了无法转接人工服务?