См. Обновление внизу вопроса
У меня есть веб-приложение ASP.NET 2.0 (скажем, https://mysite.somedomain.com/
), которое использует проверку подлинности на основе форм.Я хочу интегрировать веб-приложение ASP.NET 4.0 на этом сайте по адресу https://mysite.somedomain.com/NewApp/
.Auth Forms работает над внешним приложением, но внутреннее приложение отклоняет 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>
web.config
на внутреннем веб-приложении (ASP.NET 4.0) содержит:
<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"/>
Это код в Login.aspx.cs, который устанавливает cookie при успешной аутентификации:
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);
Если я захожу во внешнее веб-приложение, а затем перехожу на страницу во внутреннем веб-приложении, он перенаправляет на страницу входа и записывает Forms authentication failed for the request. Reason: The ticket supplied was invalid.
в журнал событий на сервере.
Как сделатьЯ получаю билет проверки подлинности форм ASP.NET 2.0, который будет принят внутренним веб-приложением ASP.NET 4.0?
Обновление : он работает под HTTPS IIS 7.5, но не под HTTPS IIS 7.0,Проводим дальнейшие исследования.
Обновление 2 : мы применили Server 2008 SP2 к серверу вместе с последним патчем для DoS с хэш-коллизиями, и с тех пор сработал обмен файлами cookie.