问题标签 [machinekey]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1375 浏览

asp.net - ASP.NET 4 成员计算机密钥

我有一个工作的 asp.net 4 会员网站大约 5 个月,今天我更改了正则表达式以放松密码限制。我仍然可以创建和访问新帐户,但不能再访问任何以前注册的帐户。

我检查了数据库并确认它们都还在。我最初的想法是密码错误。我检查了两个我知道密码的帐户,但都无法访问。我尝试使用密码恢复选项,但是当我输入用户名时,我被告知该用户不存在。

当我检查数据库并查阅成员资格表和个人资料表时,新旧用户、正则表达式更改前后的所有用户都在同一个表中。这将我引向我的最终发现,也是我没有经验的发现。是否有一个新的机器密钥正在创建新用户但无法破译旧用户,从而使它们不可用?如果是这样,我该如何解决这个问题?

0 投票
2 回答
2114 浏览

dotnetnuke - 如何安装 DotNetNuke 以便迁移现有用户?

我正在重新安装 DNN 6.0。

我有一个拥有数千名用户的现有 4.x 站点,我的目标是通过一些 SQL 查询将用户从旧数据库复制到新数据库。当然,这两个站点必须具有相同的 machineKey。

我以为我必须在运行安装程序之前设置 machineKey 值,但是安装过程会覆盖它。

如果我在运行安装程序后更改 machineKey ,我将无法访问在安装过程中创建的主机登录。

我错过了什么?

我愿意使用第三方迁移工具,但请注意,我不是在门户之间移动用户,而是在网站之间移动用户。

如果重要的话,我在 Windows 2003 上使用 SQL Server。

0 投票
1 回答
3318 浏览

encryption - SHA1 或 AES - 在 asp.net 中哪个更好?

在 asp.net 的 3.5 框架的 MachineKey 中哪个更好用?

原因是什么?

0 投票
1 回答
772 浏览

asp.net - 在 web.config 和 machine.config

如果 machine.config 文件没有定义任何部分,也没有任何 web.config 文件,它是否默认为 AutoGenerate 选项?

谢谢

维卡斯

0 投票
0 回答
3485 浏览

asp.net-mvc-3 - 提供的用户名或密码不正确。在 MVC 3 互联网应用程序中

我有一个“ Internet 应用程序”-“一个默认的 ASP.NET MVC 3 项目,带有一个使用表单身份验证的帐户控制器。 ”称为MyMv3App我使用 Ctrl + F5 在IIS Express中运行该站点,然后转到 localhost:10382/Account/Register 并创建一个用户“ test1 ”。创建用户后,我将被重定向到主页。我注销。然后我转到 localhost:10382/Account/LogOn 并输入用户“test1”的用户名和密码,然后单击“登录”按钮,用户就登录了。很酷,到目前为止一切正常!

接下来,我添加了一个新的C#类库”项目并将其命名为MyCustomMembershipProvider。然后我从这里下载ProviderToolkitSamples.msi http://weblogs.asp.net/scottgu/archive/2006/04/13/442772.aspx,运行 msi 安装程序,然后转到文件夹C:\Program Files (x86 )\ASP.NET Provider Toolkit SQL Samples安装所有文件。然后,我将这些文件添加到我刚刚创建的 C# 类库项目 MyCustomMembershipProvider、SQLMembershipProvider.csSecUtil.csSqlConnectionHelper.csSR.cs. (我需要所有这些文件,否则 C# 类库项目 MyCustomMembershipProvider 将无法编译)。然后我向 C# 类库项目 MyCustomMembershipProvider添加对System.configurationSystem.WebSystem.Web.ApplicationServices的引用。然后我构建项目,然后我转到 MyMvc3App 并添加对 MyCustomMembershipProvider 项目的引用。

注意:忘了提到我将项目 MyCustomMembershipProvider 中所有四个文件的命名空间更改为“命名空间 MyCustomMembershipProvider”,并且我将类名重命名为 MyCustomMembershipProvider。而且在 SQLMembershipProvider.cs 第 110 行中,我将其从 name = "SqlMembershipProvider"; 更改为 名称 = "MyCustomMembershipProvider";

接下来我更改 web.config 文件成员资格部分:

对此:

整个 web.config 现在看起来像这样:

现在我做了与第一段完全相同的事情;我转到 localhost:10382/Account/Register 并创建一个用户,这次我将用户称为“ test2 ”。创建用户后,我将被重定向到主页。我注销。然后我去 localhost:10382/Account/LogOn 再次登录并输入用户“ test2 ”的用户名和密码,然后单击“登录”按钮,我收到错误消息:

登录失败。请更正错误并重试。提供的用户名或密码不正确。

为什么?我错过了什么?除了第110 行 SQLMembershipProvider.cs 中的命名空间和名称变量之外,我没有触及任何东西。

我试图理解为什么,所以我搜索了一下,发现添加 machineKey 元素可能有效。所以我去了这个网站http://www.developmentnow.com/articles/machinekey_generator.aspx并生成了一个 ASP.NET 2.0 machineKey 并将其复制粘贴到 web.config 的 system.web 元素中:

我再次做了和以前一样的事情;我去 localhost:10382/Account/Register 并创建一个用户,这次我调用用户“ test3 ”。创建用户后,我将被重定向到主页。我注销。然后我转到 localhost:10382/Account/LogOn 并输入用户“ test3 ”的用户名和密码,然后单击“登录”按钮和 BAM!用户再次登录!?

为什么我必须在 web.config 中使用生成的验证密钥和解密密钥手动配置 machineKey,以便 MyCustomMembershipProvider 能够使用登录页面?据我所见,没有一篇文章/页面/博客谈到将 machineKey 元素添加到您的 web.config 以使您的自定义会员提供程序能够工作!

更新 1:添加 hashAlgorithmType="SHA1" 也可以:

有趣的是,MSDN 说 SHA1 是默认值!?

hashAlgorithmType 可选字符串属性。指定用于散列密码值的加密算法的名称。此属性的值对应于 cryptoNameMapping 配置部分中 nameEntry 元素的 name 属性。有关指定自定义哈希算法的信息,请参阅将算法名称映射到加密类。 默认值为 SHA1

更新 2:在阅读了 Microsoft 最新技术之后,我决定分享一些我发现的关于他们最新的会员资格提供商的发现;简单会员。我正处于我个人项目的阶段,我决定从我构建的 ASP.NET 2.0 天删除 CustomMembershipProvider 并改用 SimpleMembership 提供程序。为什么?好吧,您在 Jon Galloway 的以下博文中拥有您想知道的所有信息。我还添加了更多值得查看的资源链接。根据 Microsoft SimpleMembership 是 ASP.NET 2.0 Membership 的继承者。

http://weblogs.asp.net/jgalloway/archive/2012/08/29/simplemembership-membership-providers-universal-providers-and-the-new-asp-net-4-5-web-forms-and- asp-net-mvc-4-templates.aspx

http://mvccentral.net/Story/Details/tools/kahanu/securityguard-nuget-package-for-asp-net-membership

http://blog.longle.net/2012/09/25/seeding-users-and-roles-with-mvc4-simplemembershipprovider-simpleroleprovider-ef5-codefirst-and-custom-user-properties/

http://blog.osbornm.com/archive/2010/07/21/using-simplemembership-with-asp.net-webpages.aspx

http://blogs.msdn.com/b/rickandy/archive/2012/08/15/initializessimplemembership-attribute-and-simplemembership-exceptions.aspx

0 投票
2 回答
7438 浏览

asp.net - Forms Authentication Ticket 是否足够安全?

当用户基于默认的表单身份验证方法登录时,服务器会创建一个包含加密数据的 cookie(使用机器密钥作为加密密钥)。

这意味着如果有人找到/猜测/访问服务器的机器密钥,他将登录到 Web 应用程序。

我开发了一些在 4 台服务器上的应用程序。因此,我为 machine.config 中的所有服务器硬编码了相同的机器密钥,我无法使用自动生成模式。

  1. 是否可以暴力破解机器密钥?
  2. 还有其他方法吗?(我不想使用 Windows 和 Passport)
  3. Forms Authentication Ticket 是否足够安全?(即电子银行应用程序可接受)
0 投票
3 回答
11953 浏览

asp.net - 使用 ASP.NET/SQL Server 丢失会话状态

我有一个 ASP.NET MVC 工作流配置为由负载均衡器管理的两个网站。网站使用 Sql Server 作为会话状态提供程序并关闭身份验证(不需要)。

现在,我似乎偶尔会丢失会话状态,我相信这是因为请求正在由备用服务器处理,所以基本上用户正在从服务器跳转到服务器,这取决于负载均衡器认为合适的方式。我并不总是在工作流的同一阶段“丢失会话状态”,所以我相信这与网络场配置 + sql server 会话状态有关。

两个应用程序使用相同的机器密钥来加密和解密存储在 sql server 中的会话状态。

两台服务器上的配置如下:

我已经确认这在两台服务器上都是相同的,有什么我遗漏的吗?

当我使用单个服务器时,这不会发生在我的开发环境中。

我担心我正遭受周五忧郁症的折磨,毫无疑问下周会找出答案,可悲的是我不想等待!

有任何想法吗?

0 投票
0 回答
253 浏览

asp.net - Asp.net auth cookie 加密问题

我在网络场中有两台服务器。两者都使用相同的 machineKey。当一台服务器生成身份验证 cookie 时,另一台服务器不理解。还有什么可以检查的?

0 投票
2 回答
4601 浏览

forms-authentication - 在不同的 Web 应用程序之间使用 FormsAuthentication “无法验证数据”

我在同一台服务器上运行了两个 .NET Web 应用程序 - sentinel(托管在https://sentinel.mydomain.com/)和fortknox(在http://www.mydomain.com/fortknox

Sentinel 是一个身份验证“门户”。FortKnox 是一个“概念证明”应用程序,它使用表单身份验证,但将 loginUrl 设置为https://sentinel.mydomain.com/login(以及一个特殊的 Application_EndRequest 处理程序来限定 ReturnUrl)。Sentinel 是使用 MVC 4 和 Razor 用 .NET 4.0 编写的;FortKnox 是使用 .NET 2.0 的 ASP.NET MVC 2。

我正在使用 ASP.NET FormsAuthentication 并将 cookie 域设置为,.mydomain.com这样设置的 cookiesentinel.mydomain.com将与请求一起发送到www.mydomain.com,反之亦然。cookie 部分运行良好- 两个应用程序都获得了相同的 .ASPXAUTH 加密表单票。

问题是,在我们的生产服务器上,fortknox无法解密sentinel创建的 cookie - 即使它们具有相同的机器密钥。即使两个应用程序都在同一个物理盒子上运行,它也不起作用。

用户点击fortknox,他们被重定向到哨兵,他们登录,cookie被设置,他们被重定向回fortknox,然后我得到“无法验证数据”:

机器键是相同的 - 我已经在每个页面的标记中包含了这段(讨厌的!)代码:

并验证运行时使用的机器密钥完全相同。

尤其令人沮丧的是,这一直在我们的开发和登台服务器上工作,只是在生产中失败了。服务器之间的唯一区别是生产盒经常安装 Windows 更新,而我们的开发/暂存盒可能缺少一些更新;它们在其他方面是相同的(从相同的图像克隆并使用相同的设置脚本创建)

所以...同一台服务器;相同的机器密钥。ASP.NET 4 设置了 FormsAuthentication cookie。ASP.NET 2 应用程序无法解密它。错误只发生在某些服务器上;在其他人身上,它正在工作。在这一点上,我完全被卡住了......有什么想法吗?

编辑:实时服务器已经升级到最新的补丁级别。我试过申请

对于登录应用程序和 fortknox 应用程序,两者都是真假。还是没有运气...

0 投票
0 回答
448 浏览

asp.net - ASP.NET 跨 .NET 3.5 和 .NET 4 应用程序共享 machineKey

可能重复:
基于表单的身份验证在 .Net 2.0 和 .Net 4.0 应用程序之间不起作用

我有两个 ASP.NET 应用程序。第一个是 .NET 3.5 应用程序,第二个是 .NET 4 应用程序。

.NET 3.5 应用程序负责对用户进行身份验证。

它们都共享相同的机器密钥,将 SHA1 指定为验证算法(按照http://www.asp.net/whitepapers/aspnet4/break-changes#0.1__Toc256770148的说明)

但是我无法登录到第二个应用程序。

如果我将第一个应用程序转换为 .NET 4 或将第二个应用程序转换为 .NET 3.5,我可以登录。不幸的是,这在我的生产应用程序中是不可能的。

我在这里错过了什么吗?

谢谢,本

更新

当由 .NET 3.5 应用程序创建时,cookie 的长度似乎更短。这可能是一个红鲱鱼,但我想我会发布它的完整性。

更新 2

这个问题已经被问到并回答了基于表单的身份验证在 .Net 2.0 和 .Net 4.0 应用程序之间不起作用