问题标签 [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 投票
3 回答
8883 浏览

c# - ASP 网站似乎没有在 Web.Config 中为 FormsAuthentication.Decrypt 使用 machineKey

我想将身份验证 cookie 从我的 ASP.Net MVC 5(.Net 4.5.1,在 iisexpress 上本地托管,从 Visual Studio 运行)传递到我的 WCF 服务(.Net 4.5.1,在 WcfSvcHost 上本地托管,从相同运行Visual Studio 解决方案)并在那里解密。我已将两者配置为使用相同的机器密钥(Web.config 用于 ASP,App.config 用于 WCF):

两者都引用相同的 System.Web.dll:

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5.1\System.Web.dll (v4.0.30319)

但是当我尝试将 cookieString 传递给我的服务并调用

我收到以下错误:

无法验证数据

我尝试了另一种方式(在 WCF 服务上生成假票并在 ASP 网站上解密),这也不起作用。我可以在 ASP 网站上生成一张票并在那里解密它就好了。我还可以在服务上生成票证并在那里解密,没有任何问题。

我还制作了一个小型控制台应用程序,在那里创建票证并在 WCF 服务上对其进行解密,没有任何问题。

因此,似乎 ASP 网站不使用指定的密钥来加密或解密数据。

有谁知道我能做些什么来解决这个问题?

编辑:我按照本指南获取 cookie 并将其传递给我的服务。 http://thoughtorientarchitecture.blogspot.de/2009/10/flowing-aspnet-forms-authentication.html

然而,正如我所说,我尝试复制加密 cookie 的值并在一个简单的控制台应用程序中使用相同的机器密钥对其进行解密,但它不起作用。

0 投票
0 回答
651 浏览

c# - 无法验证数据 - MVC 站点

我有这个 MVC 网站已经运行了大约 3 周。突然我开始变得

Http错误503服务不可用

每当连接到网站。我的主机给我发了转储文件,它说

事件代码:3012 事件消息:处理 Web 或脚本资源请求时出错。资源标识符解密失败。

异常类型:HttpException 异常消息:无法验证数据。在 System.Web.Configuration.MachineKeySection.EncryptOrDecryptData(Boolean fEncrypt, Byte[] buf, Byte[] 修饰符, Int32 开始, Int32 长度, Boolean useValidationSymAlgo, Boolean useLegacyMode, IVType ivType, Boolean signData) 在 System.Web.UI.Page System.Web.Handlers.ScriptResourceHandler.ProcessRequest(HttpContextBase 上下文,VirtualFileReader fileReader,Action`2 logAction,Boolean validatePath)中的 .DecryptString(String s,Purpose purpose)

经过一些研究,我添加了

machineKey validationKey="AutoGenerate,IsolateApps" decryptionKey="AutoGenerate,IsolateApps" validation="3DES" decryption="3DES"

根据我的在线研究到 web.config 文件,但仍然没有运气。任何帮助将不胜感激。

0 投票
2 回答
2919 浏览

asp.net-mvc-5 - 机器密钥生成

我正在为子域单一登录设置我的 web.config。我必须设置机器密钥。如何生成机器密钥?现在我正在使用此示例中的密钥:

跨子域的 ASP.NET 身份 Cookie

但我想如果它有效,我必须以某种方式生成我自己的密钥?

0 投票
1 回答
1263 浏览

azure - 是否可以为 Azure 工作者角色设置机器密钥

我在 Azure Worker 角色中托管了一个 Owin WebAPI 服务器。
Owin Authentication 中间件似乎使用 MachineKey 来加密和生成 Token。当我只有一个该角色的实例时,这非常有效,但是一旦我想使用多个实例,每个实例生成的令牌都是不同的。

这与 Web 场的问题相同,Azure 自动为 WebRoles 解决此问题,使用相同的 .net 机器密钥对 Web.config 中的所有实例。

但这不适用于 Worker Role 实例。

是否有让 Azure 对工作角色的所有实例使用相同的机器密钥的技巧?

似乎比重写代码为 Owin 生成令牌更容易。

0 投票
1 回答
2064 浏览

asp.net - 更改机器密钥会阻止现有用户登录

我正在使用Web.config这样配置的成员资格提供程序来使用 SQL CE:

和:

如果我没有指定机器密钥,这将正常工作。

如果我Web.config如下添加机器密钥,则现有用户无法再登录。但是我可以创建新用户并且他们可以登录。

如果我删除机器密钥,那么最初创建的用户可以再次登录,而新创建的用户则不能。

为什么添加机器密钥会改变现有用户是否可以登录,因为密码是散列而不是加密的?

0 投票
1 回答
641 浏览

asp.net - 创建网络场 - ASP.Net machineKey 导致会员登录失败

出于冗余目的,我们正在为我们的网站实施负载均衡器,因此如果网站 1 出现故障,负载均衡器会将所有流量发送到服务器 2,反之亦然。

我已经实现了在 web.config 中生成的 machineKey,但这样做破坏了我的会员登录。

根据我的阅读,提供程序应默认为“散列”,除非我将提供程序设置为“加密”,这不应该影响我的登录,但确实如此。我似乎无法再登录,收到无效密码错误。

这是我相关的 web.config 代码:

我在这里做错了什么?

0 投票
1 回答
450 浏览

visual-studio - machineKey 是什么以及做什么?

我看到了加密方法,我看到了很多这个工具:“ aspnet_regiis ”,但我被要求搜索“ machineKey ”,我只能看到它是web.config的另一部分但不知道它的功能或它本身是什么......

所以...我在问这个简单的问题:machineKey是什么以及做什么?

问候。

0 投票
1 回答
945 浏览

azure - 如果我使用 Azure 网站的自动缩放功能,是否需要设置特定的机器密钥?

如果您对 Azure 网站使用自动缩放,您是否需要设置机器密钥以便可以在机器之间共享加密的身份验证令牌?

这里有一个问题似乎与 我要问的问题相同。但是,该问题涉及 Azure Web 角色。我在询问 Azure 网站。

0 投票
0 回答
27 浏览

asp.net - 我正在将我的网站转移到新服务器和新域并出现错误

我正在将我的网站转移到新服务器和新域。一切正常,除了当我登录网站(使用 asp.net 会员功能)时,我被重定向回旧网址并收到此错误:

视图状态 MAC 验证失败。如果此应用程序由 Web Farm 或集群托管,请确保配置指定相同的 validationKey 和验证算法。AutoGenerate 不能在集群中使用。

?为什么会重定向到旧的url

0 投票
0 回答
1564 浏览

asp.net-mvc - ASP.NET MVC 中 AntiForgeryToken 的 MachineKey 设置

我正在 Azure 网站中部署我的 asp MVC 5 网站。一切都很好,直到我尝试管理我的帐户(更改密码),它给出了这样的错误:

无法解密防伪令牌。如果此应用程序由 Web Farm 或群集托管,请确保所有计算机都运行相同版本的 ASP.NET 网页,并且配置指定显式​​加密和验证密钥。AutoGenerate 不能在集群中使用。

我使用的是 Asp Identity,所以所有代码都是内置的。我一直在搜索解决方案,发现了两种可能性:

1)这是因为有两个@html.antiforgerytoken。一个属于 MANAGE 控制器窗体,另一个属于导航栏中的登录局部视图。我试图排除登录部分视图,但错误仍然存​​在,所以我得出结论可能不是问题。

2)正如错误所说,可能是关于 MACHINE KEY。我试图将设置输入到网络配置中。有两种流行的方法来生成这个机器密钥,第一种是使用 ISS,第二种是使用第三方。我想使用 ISS,但我的 ISS8 没有显示模块来查看机器密钥,这很奇怪,我找不到任何解决方案。然后我尝试了第三方,并创建了这样的东西:

然后我重新部署了我的网站,但错误仍然存​​在。谁能帮帮我吗?