Я пытаюсь разработать аутентификацию SSO между двумя веб-приложениями, приложением A и приложением B. Приложение A - это приложение MVC 4, а приложение B - приложение MVC 3.
Что должно произойти:
- Когда пользователь пытается получить доступ к приложению B, он будет перенаправлен на страницу входа в приложение A.
- После того, как он войдет в приложение A, он будет перенаправлен в приложение B
На самом деле происходит следующее:
- Пользователь пытается получить доступ к приложению B, он перенаправляется в приложение A для входа в систему.
- Пользователь входит в приложение A, он перенаправляется в приложение B
- Здесь что-то не так, потому что приложение B перенаправляет пользователя обратно в приложение A для входа в систему, как если бы он еще не вошел в систему
Я проделал следующие шаги, чтобы понять, что не так:
- Подтверждено, что файл cookie аутентификации передается приложению B
- Подтверждено, что ключ проверки и дешифрования машинного ключа одинаков для обоих приложений в web.config
- Подтверждено, что enableCrossAppRedirects включен в web.config
- Я использовал код из этого сообщения на форуме, чтобы узнать, могут ли оба приложения расшифровать файл cookie аутентификации: http://forums.asp.net/t/1762166.aspx/1
- Файл cookie аутентификации успешно расшифровывается в приложении A, но не в приложении B. Приложение B выдает исключение «Невозможно проверить данные» во время метода FormsAuthentication.Decrypt
Кто-нибудь может мне с этим помочь? Почему расшифровка не удалась, даже если они использовали один и тот же машинный ключ? Могу ли я по-прежнему полагаться на этот метод аутентификации? Потому что в этой статье говорится, что это уже ненадежно. http://blog.appharbor.com/2012/02/22/asp-net-forms-authentication-considered-broken
Спасибо!