.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事件就多说,无外乎就是外部需要对内部认证失败等等信息后续做的一些处理事件 

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值