Я работаю над некоторым приложением aspnet C # 3.5. Мы используем IIS7 на нашем тестовом сервере.
Это веб-приложение связывается с SharePoint 2007 3.0 с пакетом обновления 2 через веб-службы. У нас есть machineKey в обоих файлах web.config (веб-приложение и сайт Sharepoint). Два сайта находятся на двух разных серверах.
Это сообщение работает нормально.
У нас также есть несколько самодельных SSO: использование в веб-приложении щелкает ссылку, затем SharePoint открывается в новом окне, и пользователь уже вошел в систему.
Этот SSO управляется «общим» файлом cookie в обоих приложениях (одно и то же имя, один и тот же домен).
<authentication mode="Forms">
<forms domain="crm.local"
enableCrossAppRedirects="true"
loginUrl="*** url to login page ***"
name=".CrmAuth"
protection="All"
slidingExpiration="true" timeout="200">
</forms>
В SharePoint мы разработали RedirectModule, который расшифровывает билет авторизации из файла cookie и регистрирует пользователя.
HttpCookie authCookie = app.Request.Cookies[FormsAuthentication.FormsCookieName];
if (authCookie != null)
{
FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);
FormsIdentity identity = new FormsIdentity(authTicket);
GenericPrincipal principal = new GenericPrincipal(identity, null);
}
Но вдруг этот SSO сломался. Когда SharePoint пытается расшифровать файл cookie, возникает исключение:
[HttpException (0x80004005): unable to validate data]
System.Web.Configuration.MachineKeySection.EncryptOrDecryptData(Boolean fEncrypt, Byte[] buf, Byte[] modifier, Int32 start, Int32 length, IVType ivType, Boolean useValidationSymAlgo, Boolean signData) +1008
System.Web.Configuration.MachineKeySection.EncryptOrDecryptData(Boolean fEncrypt, Byte[] buf, Byte[] modifier, Int32 start, Int32 length, IVType ivType, Boolean useValidationSymAlgo) +91
System.Web.Security.FormsAuthentication.Decrypt(String encryptedTicket) +246
На обоих серверах ничего не изменилось. В чем может быть причина?
Что я могу сделать, чтобы это исправить?