【发布时间】:2017-06-20 12:01:56
【问题描述】:
我正在为带有新创建的 MVC 应用程序的旧版 WebForms 4.61 应用程序设置 SSO。继续使用原始 SO Post 中引用的参考资料。
WebForms 应用程序中的 web.config 如下所示:
<authentication mode="Forms">
<forms loginUrl="~/account/login" timeout="120" defaultUrl="~/" />
</authentication>
<roleManager enabled="true" defaultProvider="DefaultRoleProvider">
<providers>
<add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" />
</providers>
</roleManager>
<membership defaultProvider="DefaultMembershipProvider">
<providers>
<add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
</providers>
</membership>
<httpRuntime targetFramework="4.6.1" maxRequestLength="20480" requestValidationMode="2.0" executionTimeout="300" />
我可以登录,一切都如预期的那样。但是现在我想添加以下 machineKey 配置:
<machineKey decryptionKey="AutoGenerate" validation="SHA1" validationKey="AutoGenerate" />
替换以下的默认行为(未指定时):
<machineKey decryptionKey="AutoGenerate,IsolateApps" validation="SHA1" validationKey="AutoGenerate,IsolateApps" />
但是,一旦我将 machineKey 条目添加到 web.config 并重新运行应用程序,我就无法再登录。我正在使用标准的 asp:Login 控件进行身份验证。
为什么我添加 machineKey 后身份验证停止工作?
PS。指定decryptKey和validationKey对行为没有影响,我无法登录。
【问题讨论】:
-
您是否有特定原因要删除
IsolateApps? -
“IsolateApps 修饰符指定 ASP.NET 使用每个应用程序的应用程序 ID 为每个应用程序生成唯一的加密密钥”。因为我想在应用程序中使用它,所以我不能继续使用这个说明符。
-
当您尝试登录时会发生什么? stackoverflow.com/questions/21731831/… 有帮助吗?
-
因为我没有在成员资格中指定任何内容,而是在 machineKey 中指定正在使用的内容。虽然我看到我没有指定解密属性。嗯,,,你知道在我的情况下应该是 SHA1 还是 AES?当我尝试登录时,我最终会从 asp:Login 组件中获取 LoginError 事件。