现在,新的登录表单已在MVC应用程序中完成,现在需要用户从这些表单登录. MVC应用程序使用Identity 2.x和OWIN.我最初尝试配置OWIN cookie以匹配旧版webforms应用程序中的设置,但无法让webforms应用程序读取cookie并验证用户身份.
从那时起,我决定将Indentity 2.x和OWIN安装到webforms应用程序中.我已将设置设置为相同.到期时间为30分钟,域名为“”,路径为“/”.我可以看到从MVC应用程序生成的cookie,但它没有被webforms应用程序选中.我一直收到拒绝访问的消息.
app.UseCookieAuthentication(new CookieAuthenticationoptions { AuthenticationMode = Microsoft.Owin.Security.AuthenticationMode.Active,AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,CookieName = Settings.Default.CookieName,CookiePath = Settings.Default.CookiePath,CookieDomain = Settings.Default.CookieDomain,LoginPath = new PathString(Settings.Default.CookieLoginPath),ReturnUrlParameter = Settings.Default.CookieReturnUrl,ExpireTimeSpan = Settings.Default.CookieExpireTimeSpan,SlidingExpiration = Settings.Default.CookieSlidingExpiration,Provider = new CookieAuthenticationProvider { OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager,ApplicationUser>( validateInterval: TimeSpan.FromMinutes(30),regenerateIdentity: (manager,user) => user.GenerateUserIdentityAsync(manager)) } });
我已经将机器密钥设置(以前用于表单身份验证)保持不变.但我删除了两个配置文件中的表单身份验证.
我是否错误配置了某些内容,或者是否需要更多配置才能在具有相同机器密钥的应用程序之间共享OWIN cookie?
UPDATE
>使用个人用户帐户创建了一个新的webforms应用程序.
>添加了MachineKey
>更改了MVC应用程序的配置标准
设置(复制新项目)
新的webforms应用程序列出了cookie但仍未对用户进行身份验证.
UPDATE
见下面的答案.
解决方法
> app for之间的单点登录不需要MachineKey
4.5及以上. < httpRuntime targetFramework =“4.5”/>就是你所需要的.
>关闭表单身份验证
>最重要的是,不要尝试通过从基础项目复制手动集成Identity 2.x和OWIN,因为您可能会错过命名空间或重要文件.该项目将建立和运行,并在你试图找到你错过的东西时字面上推动你疯狂.使用nuget包并删除您不需要的内容.
所以最后我确实需要将Identity 2.x和OWIN添加到我的遗留webforms应用程序中,基本上升级到4.5中的新身份验证管道以使其工作.
希望这篇文章能帮助节省一些宝贵的时间和精力.
重要更新:
尝试在IIS中部署时,即使您没有在配置中指定任何计算机密钥(并且在本地工作),它在部署时也不起作用.最后,我使用MVC应用程序作为父项,将旧版webforms应用程序用作子项,这要求父应用程序具有以下配置;
<machineKey decryptionKey="AutoGenerate" validationKey="AutoGenerate" />