.NetCore源码阅读笔记系列之Security (三) Authentication & AddOpenIdConnect
通过第二篇文章我们已经知道了授权的内部实现通过自定义的授权Handler来的,同样的道理
OpenIdConnect 同样是通过 OpenIdConnectHandler来请求授权的
那么它内部又是怎么来实现的呢?
接下来直接分析OpenIdConnectHandler的处理,如我们加了那么多参数:
.AddOpenIdConnect(o =>
{
o.ClientId = "ClientId";
o.ClientSecret ="Secret";
o.Authority ="Authority" ;
o.ResponseType = OpenIdConnectResponseType.CodeIdToken;
o.GetClaimsFromUserInfoEndpoint = true;
});
在IdentityServer4认证服务端其实就是可以配置这些 clientid 等,AddOpenIdConnect 实际就是通过这种(OIDC)协议去发起远程请求认证,结合前面一章,其实还是通过IAuthenticationServices、IAuthenticationHandler里面去处理重写实现
HandleRequestAsync,而在HandleRequestAsync内部就是通过远程请求授权认证,下面来看这段
<!doctype html>
<html>
<head>
<title>这里就是重新定向到身份提供者</title>
</head>
<body>
<form name="form" method="post" action="{}">
{}
<noscript>单击完成授权: <input type="submit" /></noscript>
</form>
<script>document.form.submit();</script>
</body>
</html>
OpenIdConnect内部动态的根据参数拼凑了这样一段html代码并且直接提交执行,说道这里可能就会想到 在使用IdentityServer4的时候 其中的 302 跳转,其实就是动态的输出了这个页面,然后立即提交跳转到身份认证提供者
这里其中还要说的就是 SignOut的处理,在使用OIDC登录进行身份认证的时候,如果 Signout的时候需要 Signout 远程的身份提供者,同时如果这里有SSO登录,还要清除掉其他系统的登录信息,这里就要主动发起通知了,所以这里会有HandleSignOutCallback的处理,就是为了回调通知其他身份认证的应用,通知他们清除本地的身份认证退出,所以一般在使用OIDC登录身份认证的时候,一般还需要写Callback处理,具体可以参考前面的IdentityServer4相关文章
关于其中的Events事件就多说,无外乎就是外部需要对内部认证失败等等信息后续做的一些处理事件
.NetCore源码阅读笔记系列之Security (三) Authentication & AddOpenIdConnect的更多相关文章
- .NetCore源码阅读笔记系列之Security (二) 自定义认证实践
通过前面对AddCookie 或者 AddOpenIdConnect 等了解,其实里面都实现了一个AuthenticationHandler<TOptions>的认证处理,接下来我们来简单 ...
- .NetCore源码阅读笔记系列之Security (一) Authentication & AddCookie
如果你使用过.NetCore开发过程序,你会很清楚,在其中我们经常会用到一些如下的代码 services.AddAuthentication(options => { options.Defau ...
- .NetCore源码阅读笔记系列之Security (四) Authentication & AddJwtBearer
接下来我们在来看下AddJwtBearer,这个与AddOpenIdConnect不太一样,后者是远程发起身份认证请求是一种主动发起式的,多用于web等客户端,验证发生在身份认证服务端,而前者是一种被 ...
- .NetCore源码阅读笔记系列之HttpAbstractions(五) Authentication
说道认证&授权其实这块才是核心,这款跟前面Security这块有者紧密的联系,当然 HttpAbstractions 不光是认证.授权.还包含其他Http服务和中间价 接下来先就认证这块结合前 ...
- nsq源码阅读笔记之nsqd(三)——diskQueue
diskQueue是backendQueue接口的一个实现.backendQueue的作用是在实现在内存go channel缓冲区满的情况下对消息的处理的对象. 除了diskQueue外还有dummy ...
- CI框架源码阅读笔记4 引导文件CodeIgniter.php
到了这里,终于进入CI框架的核心了.既然是“引导”文件,那么就是对用户的请求.参数等做相应的导向,让用户请求和数据流按照正确的线路各就各位.例如,用户的请求url: http://you.host.c ...
- CI框架源码阅读笔记5 基准测试 BenchMark.php
上一篇博客(CI框架源码阅读笔记4 引导文件CodeIgniter.php)中,我们已经看到:CI中核心流程的核心功能都是由不同的组件来完成的.这些组件类似于一个一个单独的模块,不同的模块完成不同的功 ...
- CI框架源码阅读笔记3 全局函数Common.php
从本篇开始,将深入CI框架的内部,一步步去探索这个框架的实现.结构和设计. Common.php文件定义了一系列的全局函数(一般来说,全局函数具有最高的加载优先权,因此大多数的框架中BootStrap ...
- CI框架源码阅读笔记2 一切的入口 index.php
上一节(CI框架源码阅读笔记1 - 环境准备.基本术语和框架流程)中,我们提到了CI框架的基本流程,这里再次贴出流程图,以备参考: 作为CI框架的入口文件,源码阅读,自然由此开始.在源码阅读的过程中, ...
随机推荐
- IDEA中设置Tab多行显示、打开过多自动关闭的方法
IDEA中默认Tab是单行显示的,而且默认允许同时打开10个Tab,继续打开Tab会根据规则关闭之前打开的Tab.但是可以通过设置来符合自己的使用习惯. 一.打开Tab过多自动关闭 1.选择File→ ...
- Request库学习
0x00前言 这库让我爱上了python 碉堡! 开心去学了一些python,然后就来学这个时候神库~~ 资料来源:http://cn.python-requests.org/en/latest/u ...
- Java编程思想 学习笔记12
十二.通过异常处理错误 Java的基本理念是“结构不佳的代码不能运行”. Java中的异常处理的目的在于通过使用少于目前数量的代码来简化大型.可靠的程序的生成,并且通过这种方式可以使你更加自信:你的 ...
- Gym - 100085G - GCD Guessing Game
原题链接 题意一个数字x在1-n之间,现在猜数字,每次猜一个数字a,告知gcd(x, a)的答案,问最坏情况下需要猜几次 分析 考虑素数.当猜的数为一组素数的乘积时,就可以把这些素数都猜出来.那么答案 ...
- Vue.js入门系列教程(二)
过滤器:filter 全局过滤器 <!DOCTYPE html> <html lang="en"> <head> <meta charse ...
- mssql拿webshell的方法
首先检测下MSSQL数据库的用户权限,一般有两种,一种是SA权限,这种权限很大,还有一种是DB_OWNER权限,这个权限赋给用户一些对数据库的修改.删除.新增数据库表,执行部分存储过程的权限.但是涉及 ...
- 关于Linux 虚拟机如何才能ping 通外网
需要虚拟机能够联网.以前都是用桥接模式让虚拟机跟主机通信,这几天查了好多资料,都没有写得很详细,自己捣鼓了很久,把步骤写下来吧. 虚拟机操作步骤: 点击虚拟机的“菜单栏”上的“编辑”,再点击“虚拟网络 ...
- Linux注销&登陆
⒈注销 ①在命令行使用logout,此指令在图形界面无效.
- ES系列十六、集群配置和维护管理
一.修改配置文件 1.节点配置 1.vim elasticsearch.yml # ======================== Elasticsearch Configuration ===== ...
- linux添加定时任务crond
1.crontab –e:编辑当前定时任务 保存完重新crond : service crond restart 2. crontab用法 crontab –e : 修改 crontab 文件,如果文 ...