加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 触发OWIN cookie中间件设置为被动身份验证模式的正确

发布时间:2020-12-16 04:28:00 所属栏目:asp.Net 来源:网络整理
导读:我一直在关注OAuth 2.0 Authorization Server示例代码 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
我一直在关注OAuth 2.0 Authorization Server示例代码
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))
            }
        });

我尝试在startup.auth.cs中更改cookie名称,并将“自定义”名称添加到生成声明无效的代码中.

我将继续研究,但我认为我会在此期间与社区联系.

解决方法

我不确定你有什么确切的问题.

OWIN是一个运行所有注册的中间件模块的管道.您可以注册多种身份验证类型的中间件.

cookie解密到身份.如果将身份验证类型更改为外部承载,则它将成为cookie中的承载令牌.

我不确定为什么它不适合你,这就是我用的. (我没有看过模板的外部登录)

// Enable the application to use a cookie to store information for the signed in user
  app.UseCookieAuthentication(new CookieAuthenticationOptions
            {   
                //just to show bearer
                AuthenticationType = DefaultAuthenticationTypes.ExternalBearer,}

Good explanation of active vs. passive,from Mr. Brock Allen himself.

主动与被动认证中间件

出现一个问题 – 如果新模板配置了多个OWIN认证中间件,那么真正使用哪一个?那么,OWIN认证中间件具有被动与主动的概念.活动中间件始终查看每个传入请求并尝试对呼叫进行身份验证,如果成功,则会创建代表当前用户的主体并将该主体分配给托管环境.另一方面,被动中间件仅在被要求时检查请求.对于Visual Studio 2013中的默认模板,默认情况下配置的所有中间件都是被动的,除了“主”cookie身份验证中间件(原来有两个cookie中间件在一些模板中使用 – 主要的一个和另一个用于外部身份提供者,另一个被标记为被动).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读