Проблема аутентификации форм SSO. Не удалось дешифровать файл cookie проверки подлинности

Я пытаюсь разработать аутентификацию SSO между двумя веб-приложениями, приложениями A и приложением B. Приложение A - это приложение MVC 4, а приложение B - приложение MVC 3.

Что должно произойти:

  1. Когда пользователь пытается получить доступ к приложению B, он будет перенаправлен на страницу входа в приложение A
  2. После входа в приложение A он будет перенаправлен в приложение B

Что на самом деле происходит:

  1. Пользователь пытается получить доступ к приложению B, он перенаправляется в приложение A для входа в систему.
  2. Пользователь регистрируется в приложении A, он перенаправляется в приложение B
  3. Здесь что-то не так, потому что приложение B перенаправляет пользователя обратно в приложение A для входа, как будто он еще не вошел в систему

Я сделал эти шаги, чтобы понять, что не так:

  1. Confirmed that the authentication cookie is being passed to application B
  2. Confirmed that machine key validation and decryption key is the same for both applications in web.config
  3. Confirmed enableCrossAppRedirects is enabled in web.config
  4. I used the code in this forum post to find out if both applications are able to decrypt the authentication cookie: http://forums.asp.net/t/1762166.aspx/1
  5. The authentication cookie is successfully decrypted in application A but not in application B. Application B gives "Unable to validate data" exception during FormsAuthentication.Decrypt method

Can anyone help me with this? Why did the decryption failed even though they're using the same machine key? Can I even still rely on this authentication method? Because this article says that it's not reliable anymore. http://blog.appharbor.com/2012/02/22/asp-net-forms-authentication-considered-broken

Благодаря!

4
добавлено отредактировано
Просмотры: 1
nl ja de
Как вы передаете файл cookie от A до B? Я предполагаю, что они находятся на разных доменах?
добавлено автор Paul Fleming, источник
Например: app.com/a/login и app.com/b/login ?
добавлено автор Paul Fleming, источник
Используйте одно и то же имя для обоих файлов cookie. <forms name = ". MYAPP" />
добавлено автор Adriano Silva, источник
нет, это в том же домене, но в разных веб-приложениях. cookie автоматически передается браузером в заголовке запроса.
добавлено автор Adelia Benalius, источник
no, domain.com/appA и domain.com/appB. Пользователь должен быть перенаправлен на domain.com/appA/Login, когда он пытается получить доступ к domain.com/appB
добавлено автор Adelia Benalius, источник

1 ответы

Uf .. наконец нашел проблему. Проблема заключалась в том, что приложение A предназначено для .NET Framework 4.5, а приложение B предназначено для .NET Framework 4.

I suspected this before but apparently changing the target framework in the Project Properties is not enough. You have to add this to application B web.config to make it works.

3
добавлено