OWIN身份验证提供程序如何工作?我该如何编写自定义的?

时间:2014-08-08 23:56:04

标签: asp.net authentication asp.net-membership owin

我正在查看Microsoft.OWIN.Security.Google的源代码,对于有多少类可以做这么简单的事情(重定向,获取cookie,检查它),我感到有点困惑和不知所措。 / p>

任何人都可以解释各种组件如何组合在一起

  • 中间件
  • 扩展

...以便我可以编写自定义提供程序

1 个答案:

答案 0 :(得分:1)

经过一些谷歌搜索并在调试器中尝试不同的想法后,我最终得到了#34; copy-paste-edit" :)

这是一个简短的课程简历

扩展程序 - 没有什么特别的,帮助者:

// instead of using
app.Use(typeof(CustomAuthenticationMiddleware), app, options);
// you can use
app.UseCustomAuthentication(options);

Middlware - 方法用于将身份验证附加到owin管道

AuthenticationProvider - 据我所知,这可以在外面覆盖,以便能够在不重写整个事物的情况下更改某些逻辑。有2种方法:

Authenticated - 在处理程序完成AuthenticationHandler.AuthenticateCoreAsync()

中的所有身份验证时调用 在ReturnEndpoint之前调用的{p> AuthenticationHandler.InvokeAsync,就在外部认证之前。

但是当我尝试定制现有的提供商(google,facebook,...)

时,它似乎绝对无用

处理程序 - 这是所有OAUTH2功能。

ApplyResponseChallengeAsync() - 生成AuthorizationEndpoint URL并将useragent重定向到授权服务器

InvokeAsync() - 处理获取RedirectEndpoint(/ signin-google或在授权服务器上设置的任何内容)并将用户返回到起始控制器(或回调)。它正在进行重定向,并设置了所有需要的cookie

AuthenticateCoreAsync() - 对授权服务器进行所有服务器端调用。

之前创建创建适当Cookie所需的所有Identity.Claims