相关疑难解决方法(0)

如何忽略Identity Framework魔法并使用OWIN auth中间件来获取我寻求的声明?

将第三方登录集成到ASP.NET应用程序的OWIN中间件非常酷,但我似乎无法弄清楚如何从新的ID框架中删除它来取代糟糕的Membership API.我对在基于EF的数据持久性中持久化声明和用户信息不感兴趣,我只想要声明信息,以便我可以将它应用于我自己在现有项目中的用户帐户.我不想采用新的ID框架来利用这些东西.

我一直在浏览CodePlex上的代码,但是有很多静态魔法.你能提出任何建议吗?

asp.net owin

39
推荐指数
1
解决办法
1万
查看次数

在ASP.Net Identity中声明Cookie安全性

我通过网络阅读理解它的方式是声明存储为cookie,现在我将用户的角色添加到声明集合中,因此它将保存到声明Cookie中.现在这很好,因为每次我在ASP MVCController中检查授权属性时,它会省去数据库轮次跳转以检索用户角色.

  • 这样安全吗?
  • 如果被盗,可以解密cookie吗?
  • 有没有替代方法不在Cookie中保存声明并将其保存在服务器上,这是有效的,还是我担心多少?

c# asp.net asp.net-mvc claims-based-identity owin

19
推荐指数
2
解决办法
8745
查看次数

无法添加和获取自定义声明值

我正在使用带有身份2.0的mvc 5.我想在应用程序上使用自定义声明值,但我得到null值.我究竟做错了什么?

更新的代码

帐户控制器中的登录代码

if (!string.IsNullOrEmpty(model.UserName) && !string.IsNullOrEmpty(model.Password))
            {
                AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
                var result = SignInManager.PasswordSignIn(model.UserName, model.Password, model.RememberMe, shouldLockout: false);


                //Generate verification token
                Dictionary<string, string> acceccToken = null;
                if (SignInStatus.Success == 0)
                {
                    var userDeatails = FindUser(model.UserName, model.Password).Result;
                    if (userDeatails != null)
                        acceccToken = GetTokenDictionary(model.UserName, model.Password, userDeatails.Id);
                }
                if (model.RememberMe)
                {
                    HttpCookie userid = new HttpCookie("rembemberTrue", "1");
                    userid.Expires.AddDays(1);
                    Response.Cookies.Add(userid);
                }
                else
                {

                    HttpCookie userid = new HttpCookie("rembemberTrue", "0");
                    userid.Expires.AddDays(1);
                    Response.Cookies.Add(userid);

                }
                #region custom claims


                var claims = new Claim[]
                           {
                    new Claim("urn:Custom:MasterUniqueId", …
Run Code Online (Sandbox Code Playgroud)

c# claims-based-identity owin asp.net-mvc-5 asp.net-identity

17
推荐指数
1
解决办法
857
查看次数

如何将Asp.Net Identity中的大型cookie分成较小的cookie以允许多个声明?

我正在为我们的MVC应用程序开发基于声明的授权原型.我们使用Asp.Net Identity进行身份验证.

我们希望对每个控制器操作提出索赔,然后给予/取消用户的索赔,这样我们就可以很好地控制谁可以去哪里.

我们的应用程序已有800多个动作并且不断增长.我做了一个小测试应用程序,看看如何处理这些索赔.并遇到一个问题:cookie限制为4092字节.

并且拥有大量声明会增加身份验证Cookie.大约600个具有短名称/值(每个5个字符)的声明为我提供了大小超过4K的cookie,并且具有此数量的声明的用户无法登录 - 无法在浏览器中设置cookie.

600个声明不是我们的应用程序的限制.我们可能还需要更多.

有没有办法将auth-cookie分成几个较小的cookie?

ps如果你很好奇,这里是我的代码"profiler"以及项目其余部分.

pps我知道大型cookie的性能影响.现在不用担心.

更新目前我的答案没有开箱即用的解决方案.但看起来我不是唯一有这个问题的人.Microsoft.Owin正在处理auth-cookie.目前Owin.Cookies的源代码具有ChunkingCookieManager,默认情况下在CookieAuthenticationMiddleware中分配.

这段代码非常新鲜的坏消息(已于2014年7月10日签入,仅20天).它可以通过预先发布的nuget Microsoft.Owin.Security.Cookies获得.不确定我是否想在生产现场使用RC2.

还有其他方法吗?

cookies asp.net-mvc claims owin asp.net-identity

6
推荐指数
2
解决办法
2944
查看次数