执行DI中注入的认证服务方法,并传入上下文和默认的认证方案名称.


先判断存不存在默认认证方案,不存在抛异常,接着去所有的认证处理器集合中拿到默认认证方案的处理器.接着调用处理的认证方法,认证成功,判断当前用户身份集合中在临时缓存中存不存在,不存在,可以执行Claim的转换.这很好,说明用户认证成功之后的Cliam也是可以被转换的.

只要注入IClaimsTransformation服务即可,你就可以执行你需要的业务的Claim转换,最后返回结果

到这里整个认证流程结束.非常的简单.且关键点的扩展微软都预留了.可以自定义实现
(2)、流转服务的介绍.
上面介绍了整个认证组件的流转过程,因为我对流程很清楚,所以大家可能还是不理解.所以接下去开始介绍流转必须服务的注入.

认证处理器的Provider类,那么Core是在哪里注入认证处理器的呢?

这里,核心也是红框里的,下面的只是一些依赖组件。

微软注入默认的认证处理器.看下获取处理器的实现,对应中间件.

阅读源码发现,Provider类并不具体实现提供认证处理器的方法.而是通过SchemeProvider来提供.

原来是IAuthenticationSchemeProvider类提供认证处理器.而且是通过反射实现(这点开销,就没必要考虑性能问题,当然你可以考虑重构),那么问题来了,在哪里出入IAuthenticationSchemeProvider服务内,回到上面那张图

微软也提供了默认实现,去看看GetSchemeAsync方法的实现


ok,到这里就说明认证处理器是通过向这个字典写入值,来实现的.

上面是认证方案AuthenticationScheme类的核心字段,HandlerType就是认证处理器.








