zoukankan      html  css  js  c++  java
  • .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="{0}">
            {1}
            <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事件就多说,无外乎就是外部需要对内部认证失败等等信息后续做的一些处理事件 

  • 相关阅读:
    Asp.NET 4.0 ajax实例DataView 模板编程1
    ASP.NET 4.0 Ajax 实例DataView模板编程 DEMO 下载
    部分东北话、北京话
    .NET 培训课程解析(一)
    ASP.NET 4.0 Ajax 实例DataView模板编程2
    ASP.NET Web Game 架构设计1服务器基本结构
    ASP.NET Web Game 构架设计2数据库设计
    TFS2008 基本安装
    Linux上Oracle 11g安装步骤图解
    plsql developer远程连接oracle数据库
  • 原文地址:https://www.cnblogs.com/liyouming/p/10006194.html
Copyright © 2011-2022 走看看