Tag: forms authentication

ASP网站似乎没有在Forms.Config中使用machineKey进行FormsAuthentication.Decrypt

我想从我的ASP.Net MVC 5(.Net 4.5.1,本地托管在iisexpress上,从Visual Studio运行)传递身份validationcookie到我的WCF服务(.Net 4.5.1,本地托管在WcfSvcHost上,从同一个端口运行) Visual Studio解决方案)并在那里解密。 我已将两者配置为使用相同的machinekey(用于ASP的Web.config,用于WCF的App.config): 两者都引用相同的System.Web.dll: C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.5.1 \ System.Web.dll(v4.0.30319) 但是当我尝试将cookieString传递给我的服务并调用时 FormsAuthenticationTicket tick = FormsAuthentication.Decrypt(cookieString); 我收到以下错误: 无法validation数据 我反过来尝试了(在WCF服务上生成假票并在ASP网站上解密),这也没有用。 我可以在ASP网站上生成一张票并在那里解密就好了。 我也可以在服务上生成一张票,并在那里解密它没有任何问题。 var t1 = new FormsAuthenticationTicket(“foo”, false, 1337); var cookie = FormsAuthentication.Encrypt(t1); var t2 = FormsAuthentication.Decrypt(cookie); 我还制作了一个小型控制台应用程序,在那里创建了一个票证并在WCF服务上解密它没有任何问题。 因此,似乎ASP网站不使用指定的密钥来加密或解密数据。 有谁知道我能做些什么来解决这个问题? 编辑:我按照本指南获取cookie并将其传递给我的服务。 http://thoughtorientedarchitecture.blogspot.de/2009/10/flowing-aspnet-forms-authentication.html 然而,正如我所说,我试图复制加密cookie的值,并在一个简单的控制台应用程序中使用相同的机器密码解密它,它不起作用。

FormsAuthentication对象已废弃

我在MVC5站点中使用以下代码: [HttpPost] [ValidateAntiForgeryToken] public ActionResult Login(LoginModel loginModel) { if (ModelState.IsValid) { var authenticated = FormsAuthentication.Authenticate(loginModel.UserName, loginModel.Password); if (authenticated) { FormsAuthentication.SetAuthCookie(loginModel.UserName, true); return RedirectToAction(“AdminPanel”); } ModelState.AddModelError(“”, “The username and password combination were incorrect”); } return View(loginModel); } 这引发了以下警告: System.Web.Security.FormsAuthentication.Authenticate(string,string)’已过时:’建议的替代方法是使用Membership API,例如Membership.ValidateUser。 有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=252463 。 首先是免责声明 – 我是那些喜欢与事物保持同步的开发人员之一,我更愿意完全避免VS中的警告。 但是,在这个特定的实例中,我使用的是非常原始的身份validation,它直接来自web.config,如下所示: 在这个项目中绝对没有进一步的登录要求 – 使用数据库是过度的,并且不需要分布式登录; 基本上,将详细信息存储在web.config中是最理想的解决方案,每个应用程序可能只有一个用户。 我无疑会从控制器(使用DI / IoC)中抽象出认证代码,但我仍然打算使用FormsAuthentication对象对web.config中的详细信息进行身份validation。 虽然我完全了​​解会员提供商,DotNetOpenAuth和新的(但非常可怕的)基于OWIN的身份validation模型,但上述代码绰绰有余。 第一个问题 – […]

多个网站,单点登录设计

我有个问题。 我最近做过一些工作的客户有一系列具有不同登录机制的网站。 他希望慢慢迁移到他的网站的单一登录机制(全部用asp.net mvc编写)。 我在这里查看我的选项,所以这里是一个要求列表: 它必须是安全的(duh) 它需要支持超出通常名称,地址内容(例如用户的金钱或信用)的额外用户属性 为了方便起见,它必须提供一个集中的用户管理Web控制台(我知道这将是一个小项目,除了我选择的任何设计解决方案) 它必须与现有网站集成,而无需重新设计整个产品(我知道这取决于当前的产品实现)。 它必须处理用户在注册时发送的电子邮件(以便他激活他的帐户) 当他点击电子邮件中的激活我链接时,它必须处理激活用户(我知道5和6需要某种forms的电子邮件模板系统来支持每个应用程序的不同电子邮件) 我正在考虑创建一个与表单身份validation一起工作的库,它可以公开所需的任何方法(例如登录,注销,激活等)以及通过电子邮件,注册处理等实现激活的小型宁静服务。 考虑到已经遗漏了许多东西以使这个问题简短而重要,这听起来像是一个好的设计吗? 但这看起来像一个非常普遍的问题,所以我可以使用任何现有的项目吗? 谢谢阅读。

在多个服务器和子域上设置持久性表单身份validation

我正在尝试跨多个服务器和子域设置表单身份validation。 我为每个应用程序设置了静态机器密钥,如下所示: …我的表单身份validation配置为每个应用程序相同: 我也试过在我的域名前加上一段时间,因为我看到一些人建议,但这也不起作用。 这在我的本地计算机上运行正常,在IIS中为每个子域设置了单独的站点。 它也可以在我们的开发服务器上运行,所有站点仍然驻留在一台机器上。 但是,当我部署到临时环境时,跨域身份validation将停止工作。 在该环境中,我在单个服务器上运行主站点(发生登录的位置),在两个负载平衡的服务器上运行辅助站点(我的身份validation应该保留的位置)。 所有这些都在Windows 7(本地)或Server 2008 R2(开发和登台)上的IIS 7下运行。 我通过使用MachineKey.Encode在主站点上编码字符串并使用MachineKey.Encode在辅助服务器上解码结果来validation机器密钥是相同的MachineKey.Decode. 我还validation了.SHAREDAUTH cookie是通过检查Firefox和Chrome报告的请求标头,以及将调试器挂钩到Application_BeginRequest和Application_AuthenticateRequest.来传递给请求中的第二个应用Application_AuthenticateRequest. 我可以在Application_BeginRequest执行期间看到cookie,但是当调用Application_AuthenticateRequest时它就消失了。 从我可以收集的内容来看,这似乎意味着身份validation票证的反序列化失败,但我无法弄清楚为什么在多服务器环境中可能发生这种情况,而不是单个服务器环境,除了不同的机器密钥,我已经证实并非如此。 我还设置了自定义MembershipProvider和RoleProvider,并且这些工作在每个站点上都可以独立工作。 我错过了什么?

MVC中的自定义表单身份validation

我想在我的网站上使用身份validation才能登录管理部分。 我已经有了数据库模式,我不想使用SQL Server的ASP.NET成员资格表。 我有三个表:Employees,Roles和EmployeesInRoles。 我真的想保持尽可能简单,但我找不到解决方案。 我只想在表格中使用表单身份validation,以便员工可以登录,注销,更改密码等。 如果有人可以指导我发表关于此的博客文章或教程,那就太棒了。

Asp.Net Core – 最简单的表单身份validation

我有这个旧的MVC5应用程序,它以最简单的forms使用表单身份validation。 web.config中只存储一个帐户,没有角色等。 登录例程只是调用 FormsAuthentication.Authenticate(name, password); 就是这样。 在asp.net核心中是否有类似的东西(在简单性方面)?

如何在Nancy中针对Active Directory进行身份validation?

这是一篇过时的文章,但http://msdn.microsoft.com/en-us/library/ff650308.aspx#paght000026_step3说明了我想做的事情。 我选择南希作为我的网络框架,因为它的简单性和低礼仪方法。 因此,我需要一种使用Nancy对Active Directory进行身份validation的方法。 在ASP.NET中,看起来您只需通过web.config文件中的某些设置在基于数据库的成员资格提供程序和Active Directory之间切换即可。 我不需要具体,但在开发和生产之间切换的能力将是惊人的。 如何才能做到这一点?

ASP.NET mvc auth或会话比设置更快到期

在我的ASP.NET MVC5 网站中,web.config中的登录和会话超时如下: 会话或身份validation仍然在五分钟内完成。 我已经接近我的网络托管服务,以增加IIS的超时,他们在增加IIS的超时后共享了一个屏幕截图 ,但没有任何改变。 知道为什么会这样。

Membership.GetUser()。ProviderUserKey始终返回null

我最近开始使用ASP.NET Forms Authentication和Membership。 我在Visual Studio中创建了一个C#项目,它自动创建了像“/Account/Login.aspx”这样的页面。 然后我按照一个示例将aspnet_*表安装到我的SQL Server数据库中,并且我已经能够使用控件来创建用户。 我之后能够以此用户身份登录,并在调用时显示登录的用户名 但是,当我在C#代码中调用以下内容时,在Button Click事件处理程序中,我总是得到一个Null Reference Exception: string UserID = Membership.GetUser().ProviderUserKey.ToString(); 不应该从我的aspnet_users表中返回UserID吗? 如果显示UserName值,我不应该总是能够调用Membership.GetUser().ProviderUserKey

无法使用FormsAuthentication.SignOut()从ASP.NET MVC应用程序注销

我试图在ASP.NET MVC中实现Logoutfunction。 我为我的项目使用表单身份validation。 这是我的退出代码: FormsAuthentication.SignOut(); Response.Cookies.Clear(); FormsAuthenticationTicket ticket = new FormsAuthenticationTicket( 1, FormsAuthentication.FormsCookieName, DateTime.Today.AddYears(-1), DateTime.Today.AddYears(-2), true, string.Empty); Response.Cookies[FormsAuthentication.FormsCookieName].Value = FormsAuthentication.Encrypt(ticket); Response.Cookies[FormsAuthentication.FormsCookieName].Expires = DateTime.Today.AddYears(-2); return Redirect(“LogOn”); 此代码将用户重定向到登录屏幕。 但是,如果我通过在地址栏中指定名称来调用操作方法(或从地址栏下拉列表中选择上一个链接),我仍然可以在不登录的情况下访问安全页面。 有人可以帮我解决这个问题吗?