Tag: 身份validation

HttpContext.Current.User.Identity.IsAuthenticated返回false

我有一个奇怪的问题。 我有一个包含以下代码的页面。 if (!HttpContext.Current.User.Identity.IsAuthenticated) { Server.Transfer(@”~/Views/Public/Unauthorised.aspx”); return; } 出于某种原因,对于一个用户(我们将其缩小到他的单个机器和Windows登录配置文件), IsAuthenticated始终返回false。 即使他已登录网站,也可以导航到需要经过身份validation的用户的其他页面。 除了这一页。 我们检查了机器是否接受了所有cookie,我们仍然遇到同样的问题。 我不知道从哪里开始……有什么建议吗?

.Web和winforms的.Net身份validation

我有一个为客户端构建的ASP.NET Web应用程序,它使用默认的ASP.NET表单身份validation。 他们现在正在请求一个与Web应用程序“兼容”的桌面(WinForms)应用程序。 我创建了web服务,以便从Web应用程序访问他们想要的数据并将其放入桌面应用程序中。 这很好..但是需要基于已经存储在asp.net应用程序中的角色具有相同级别的安全性和数据访问权限。 所以现在是时候在两个应用程序之间进行身份validation了。 我希望通过在用户首次打开WinForms应用程序时提示登录以及可能是Web服务的调用来对用户进行身份validation,获取用户角色和配置文件来利用asp.net身份validation。 我确信这已经完成或者询问过……我只是没有在SO中找到问题/答案。

在ASP.NET Core中的_Layout.cshtml中访问cookie

我正在尝试在登录成功时将身份validation密钥存储到我的cookie中: HttpContext.Response.Cookies.Append(“Bearer”, accessToken, cookieMonsterOptions); 所以在控制器类中这是有效的。 我可以轻松创建和阅读我的cookie。 但现在我想检查一下,如果它存在,请在我的_Layout.cshtml读取cookie的值,并显示登录用户的名称 – 或登录链接。 但是如何在部分_Layout.cshtml读取我的cookie? string value = HttpContext.Request.Cookies.Get(“Bearer”); 不起作用。 它试图将System.Web添加到我的使用中,或者说HttpContext是静态的并且需要访问Request的引用。 有什么建议或想法吗?

FormsAuthenticationTicket isPersistent属性的目的是什么?

我试图了解FormsAuthenticationTicket类中找到的isPersistent属性的目的。 http://msdn.microsoft.com/en-us/library/kybcs83h.aspx 是否存在设置isPersistent的情况? 在什么情况下我想将isPersistent设置为true和false? 该属性似乎是多余的,因为我发现在浏览器会话中持久保存用户身份validationcookie的唯一方法是设置创建故障单后创建的cookie的Expires属性; 即使票证的持久值设置为false 。 我还发现,将isPersistent设置为true,将票证到期时间(不是cookie)设置为10秒,效果不大; 门票在10秒后到期。 FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, identity.Name, DateTime.Now, DateTime.Now.AddMinutes(FormsAuthentication.Timeout.TotalMinutes), isPersistent, JsonSerializerService.ToJson(identity), FormsAuthentication.FormsCookiePath); string encryptedTicket = FormsAuthentication.Encrypt(ticket); var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket); cookie.Path = FormsAuthentication.FormsCookiePath; cookie.Expires = DateTime.Now.AddYears(1); // good for one year 我感谢我可以将上面的代码更改为可选的设置expires if (isPersistent) cookie.Expires = DateTime.Now.AddYears(1); // good for one year 已经创建了一个示例应用程序@ GitHub。 https://github.com/chrismoutray/AuthSample这基本上表明,即使将isPersistent标志设置为true,跨浏览器授权也不起作用。

FormsAuthentication Microst.AspNet.Identity.Owin.SignInManager.to之间的区别

ASP.NET MVC的默认项目模板附带了一个名为Microst.AspNet.Identity.Owin.SignInManager的类。 此类用于validation用户 我不明白为什么我应该使用SignInManager而不是在ASP.NET MVC项目中使用简单的FormsAuthentication。 SignInManager有什么好处? 它是否根据FormsAuthentication以不同的方式进行身份validation? 它比FormsAuthentication更安全吗? 除了身份validation之外,我还可以使用SignInManager做什么? SignInManager和下面的代码之间有什么关系? SignInManager是否使用下面设置的设置? app.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 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 […]

将身份validation添加到ASP.NET WebApi 2.2

我创建了一个WebApi 2.2项目(来自一个空的新ASP.NET项目)来certificate一些实现概念,我现在想要为它添加身份validation。 我注意到在新的WebApi应用程序上添加身份validation的唯一方法是使用其中一个(VS 2013,在我的情况下)模板。 是否有一种确定的方法可以将身份validation添加到现有的WebApi 2.2应用程序中? 我只想使用持票人代币,如果这对我可能收到的任何答案产生影响。

使用WCF SOAP API中的HTTP授权标头进行身份validation

我们目前有一个WCF SOAP API,允许使用者使用用户名和密码进行身份validation(内部使用UserNamePasswordValidator )作为参考,用户名和密码在SOAP Body中传递,如下所示: 2013-04-05T16:35:07.341Z 2013-04-05T16:40:07.341Z someusername somepassword 我们还希望另外支持使用者在HTTP Authorization标头中指定凭据,如基本身份validation或OAuth承载令牌 我们已经有几种方法可以实际对非SOAP API进行身份validation,但我不熟悉如何告诉WCF使用我可能为此创建的任何类。 我怎么能做到这一点? 我见过的另一个问题就是尝试回答这个问题 ,但是接受的答案是使用SOAP标头,而不是HTTP标头,而提问者基本上放弃了。 显然,任何解决方案都需要向后兼容 – 我们需要继续支持消费者在SOAP安全标头中指定凭据。

如何使用证书而不是密码进行身份validation?

我有一个小型的C#MVC5应用程序,我正在构建并准备添加用户安全模块。 (之前我刚刚创建了一个用于测试角色的会话变量)但是,我的安全需求不适合我见过的任何预构建的安全模块,即SimpleMembership等。 以下是我的情况和需求的摘要: 没有密码 – 不允许使用用户名/密码auth 用户使用带有客户端证书的智能卡在Web服务器级别进行身份validation – 我不管理服务器,也永远不会看到他们的卡 IIS填充了Request.ClientCertificate和其他一些,这是我有权访问的 我的应用程序将有专用的用户帐户 – 不使用Windows身份validation等 – 所以更像是用户名/密码系统,而无需输入用户名或密码 服务器通过使用某种forms的Windows身份validation及其智能卡证书来validation它们以访问服务器 ,但我不能,我只需要接受加载到Request集合中的证书 用户表存储在SQL Server中(现在……) 不希望使用EntityFramework,因为所有应用程序数据都来自Oracle数据库,并试图获得批准将身份validation/授权表移入其中并消除两个数据库的工作,而EF for Oracle在我们的环境中不起作用,所以我’ m使用OleDb代替:( 实施这样的计划的最佳方法是什么? 我开始做的是构建三个表 – Users,Roles和UserRoles – 而Users表包含(string)ClientCertificate的副本。 进入的用户将通过拉取Request.ClientCertificate并查找匹配的用户记录,然后从UserRoles获取角色列表来对应用程序进行身份validation。 用户对象将存储在包含用户和角色信息的会话中,并且属性将在控制器上用于通过要求某些角色来控制访问。 (我们有另一个使用这种基本方法的应用程序,但它是Linux上的J2EE所以我不能只重用它的代码) 然而,我也开始阅读有关IIdentity和IPrincipal的内容,但我不清楚这是否是我可以使用的东西。 显然,我更喜欢使用由专家设计的安全模型。 那么我应该使用inheritance自IIdentity和IPrincipal的自定义类来构建我的身份validation系统吗? 或者我应该使用其他方法吗? 完全有可能像SimpleMembership这样的东西可以定制,以满足我的需求,但如果是这样,我不知道它。 感谢您的建议,非常感谢。

在ASP.net MVC单页面应用程序中删除身份validation

我试图在visual studio 2013中使用asp.net MVC SPA模板,我不需要任何身份validation位,我只需要直接加载到其中一个控制器页面上。 如何从初始模板中删除所有身份validation内容?

为什么我的表单身份validation票证到期如此之快?

我在ASP.NET应用程序中使用表单身份validation。 我将FormsAuthenticationTicket配置为在1年后到期,但它实际上在1小时后到期。 我无法弄清楚为什么。 以下是登录过程中涉及的所有代码: public static bool Login(int id) { try { string securityToken = UserHelper.AuthenticateUser(id); DateTime expiryDate = DateTime.Now.AddYears(1); FormsAuthenticationTicket ticket = new FormsAuthenticationTicket( 1, id.ToString(), DateTime.Now, expiryDate, true, securityToken, FormsAuthentication.FormsCookiePath); string encryptedTicket = FormsAuthentication.Encrypt(ticket); HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket); cookie.Expires = expiryDate; HttpContext.Current.Response.Cookies.Add(cookie); return true; } catch { return false; } } […]