Ste*_*eve 8 asp.net cookies middleware oauth-2.0 owin
我一直在关注OAuth 2.0授权服务器示例代码 http://www.asp.net/aspnet/overview/owin-and-katana/owin-oauth-20-authorization-server
以及查看mugget包Microsoft.aspnet.identity.samples包(install-package Microsoft.aspnet.identity.samples -Pre)
并且我试图了解被动与活动cookie中间件的工作原理.
在授权服务器示例中,"应用程序"cookie设置为被动.在Identity示例中,"ApplicationCookie"处于活动状态.
当我阅读有关此属性的内容时,它解释了只有在匹配的AuthenticationType请求时才会触发被动中间件.
如果我编辑Microsoft.aspnet.identity.samples中的startup.auth.cs文件并将应用程序cookie设置为被动,然后登录,它似乎验证,但不会登录.
深入研究代码,我看到帐户控制器归结为对SignInHelper.SignInAsync的调用
此方法获得用户的声明权限,即调用:CreateIdentityAsync(user,DefaultAuthenticationTypes.ApplicationCookie)
我显然不理解某些东西,因为根据我的阅读并且可以说,cookie具有与Claim相同的AuthenticationType,但是当调用Authentication.SignIn时,Cookie似乎没有设置并且我返回到主页面,包含注册和登录选项.
要复制该问题,请启动一个新的项目空asp.net应用程序,然后安装Identity示例包,然后将startup.auth.cs的app.useCookieAuthentication更改为:
app.UseCookieAuthentication(new CookieAuthenticationOptions {
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
AuthenticationMode = Microsoft.Owin.Security.AuthenticationMode.Passive,
LoginPath = new PathString("/Account/Login"),
Provider = new CookieAuthenticationProvider {
// Enables the application to validate the security stamp when the user logs in.
// This is a security feature which is used when you change a password or add an external login to your account.
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
validateInterval: TimeSpan.FromMinutes(30),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
}
});
Run Code Online (Sandbox Code Playgroud)
我尝试在startup.auth.cs中更改cookie名称,并将"自定义"名称添加到生成声明无效的代码中.
我将继续研究,但我认为我会在此期间与社区联系.
我不确定你的确切问题。
\n\nOWIN 是一个运行所有注册的中间件模块的管道。您可以注册多种身份验证类型的中间件。
\n\ncookie 解密身份。如果将身份验证类型更改为外部承载,它将成为 cookie 中的承载令牌。
\n\n我不确定为什么它不适合你,这就是我使用的。(我没有看模板的外部登录)
\n\n // Enable the application to use a cookie to store information for the signed in user\n app.UseCookieAuthentication(new CookieAuthenticationOptions\n { \n //just to show bearer\n AuthenticationType = DefaultAuthenticationTypes.ExternalBearer,\n LoginPath = new PathString("/Account/Login"),\n }\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n主动与被动身份验证中间件
\n\n出现一个问题\xe2\x80\x94 如果新模板配置了多个OWIN认证中间件,那么到底使用哪一个呢?嗯,OWIN 身份验证中间件有被动与主动的概念。活动中间件始终查看每个传入请求并尝试对调用进行身份验证,如果成功,它们会创建代表当前用户的主体,并将该主体分配给托管环境。另一方面,被动中间件仅在需要时检查请求。对于 Visual Studio 2013 中的默认模板,默认情况下配置的所有中间件都是被动的,除了 \xe2\x80\x9cmain\xe2\x80\x9d cookie 身份验证中间件(事实证明有两个 cookie 中间件可以获取在某些模板中使用 \xe2\x80\x94 主要的一个和另一个用于外部身份提供者的模板,另一个被标记为被动)。
\n| 归档时间: |
|
| 查看次数: |
8938 次 |
| 最近记录: |