gpt4 book ai didi

c# - ASP.NET 2.0 站点中的 ASP.NET 4.0 应用程序能否使用相同的表单例份验证 cookie?

转载 作者:太空狗 更新时间:2023-10-29 20:28:36 27 4
gpt4 key购买 nike

查看问题底部的更新

我有一个使用表单例份验证的 ASP.NET 2.0 Web 应用程序(比如 https://mysite.somedomain.com/)。我希望在此站点中集成一个 ASP.NET 4.0 Web 应用程序,基于 https://mysite.somedomain.com/NewApp/。 Forms Auth 正在处理外部应用程序,但内部应用程序正在拒绝 cookie。

web.config 在外部 (ASP.NET 2.0) 网络应用程序中包含:

<httpCookies requireSSL="true"/>
<authentication mode="Forms">
<forms name="MySiteWebAuth" loginUrl="/Login.aspx" protection="All"
path="/" timeout="90" requireSSL="true" slidingExpiration="true"/>
</authentication>
<machineKey (same machine key is in both configs)
validation="SHA1"
decryption="AES"/>
<authorization>
<deny users="?"/>
<allow users="*" />
</authorization>
内部 (ASP.NET 4.0) 网络应用程序的

web.config 包含:

<authentication mode="Forms">
<forms name="MySiteWebAuth" loginUrl="/Login.aspx" protection="All"
path="/" timeout="90" requireSSL="true" slidingExpiration="true"
ticketCompatibilityMode="Framework20"/>
</authentication>
<machineKey (same machine key is in both configs)
validation="SHA1"
decryption="AES"/>

这是在成功验证时设置 cookie 的 Login.aspx.cs 中的代码:

FormsAuthenticationTicket ticket = 
new FormsAuthenticationTicket(
1,
ApplicationContext.User.Identity.Name,
DateTime.Now,
DateTime.Now.AddMinutes(90),
false,
ApplicationContext.User.Identity.SessionID.ToString()
);
HttpCookie cookie =
new HttpCookie(
FormsAuthentication.FormsCookieName,
FormsAuthentication.Encrypt(ticket)
);

cookie.Path = FormsAuthentication.FormsCookiePath;
cookie.HttpOnly = true;
Response.Cookies.Add(cookie);

如果我登录到外部 Web 应用程序,然后导航到内部 Web 应用程序中的一个页面,它会重定向到登录页面并写入 Forms authentication failed for the request。原因:提供的票证无效。 添加到服务器上的事件日志。

如何让内部 ASP.NET 4.0 网络应用程序接受 ASP.NET 2.0 Forms Auth 票证?

更新:它在 HTTPS IIS 7.5 下工作,但在 HTTPS IIS 7.0 下不工作。进行更多调查。

更新 2:我们已将 Server 2008 SP2 连同哈希冲突 DoS 的最新补丁应用到服务器,从那时起,cookie 共享就开始工作了。

最佳答案

除了保持几乎所有上述值相同之外,您还需要在 4.0 应用程序的配置文件中设置 machineKey 元素的 compatibilityMode 属性:

<machineKey compatibilityMode="Framework20SP2" validationKey="THE_KEY" decryptionKey="ANOTHER_KEY" validation="SHA1" />

关于c# - ASP.NET 2.0 站点中的 ASP.NET 4.0 应用程序能否使用相同的表单例份验证 cookie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8845044/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com