Проблема дешифрования файлов cookie между двумя доменами - PullRequest
0 голосов
/ 22 октября 2010

Я работаю над некоторым приложением 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

На обоих серверах ничего не изменилось. В чем может быть причина? Что я могу сделать, чтобы это исправить?

1 Ответ

0 голосов
/ 01 ноября 2012

Это произошло из-за изменения какой-либо коробки обратного прокси в локальной сети ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...