2016-06-20 3 views
0

У нас есть два сервера, которые работают на одной машине в том же домене.ASP.NET Single Sign On

Оба написаны на ASP.NET и используют структуру Identity.

Мне нужно реализовать Single Sign-On (и один разблокировать) между ними.

Фактический вход в AJAX (I POST имя пользователя и пароль, сервер аутентифицирует пользователя и устанавливает сеанс, а затем отправляет URL-адрес переадресации клиенту).

Я нашел подавляющее количество информации о Owin, рамки идентичности, претензий и т.д.

я нашел учебники объяснить, как создавать проекты, используя только о каких-либо модального диалога и любого мастера есть в Visual Studio, который я пытался понять, но на самом деле бесполезен для меня, поскольку у меня уже есть система аутентификации.

Я даже нашел несколько демок, претендующих на реализацию SSO во всех видах путей, а также некоторые вопросы StackOverflow, которые считают просто поставить это и что значения в web.config и вы сделали, что показалось мне странным и я понял, что мне не хватает базового понимания того, как это работает.

Тем не менее, я не могу понять, как SSO работает в ASP.NET Identity.

Может кто-нибудь объяснить это мне простым способом или передать мне какое-то подобное объяснение?

Снова: у меня есть две системы аутентификации. Какой код и/или изменения конфигурации мне нужно сделать, чтобы работать Single Sign-On?

+1

Какая система аутентификации вы используете? –

+0

Как я уже сказал, Framework Identity, если вы не имеете в виду что-то еще? –

+0

Почему downvote? –

ответ

2

Прежде всего, если вы хотите, чтобы они делились аутентификацией, они должны работать в одном магазине пользователей. Другими словами, вы должны указать код инициализации Identity (ApplicationUser, ApplicationDbContext, ApplicationUserManager и ApplicationSignInManager) в библиотеку классов, которую разделяют оба приложения. Попытка проработать и поделиться двумя отдельными базами данных с пользовательскими данными будет невыполнимой и непреодолимой задачей.

Тогда вам нужно только убедиться, что оба приложения используют один и тот же машинный ключ. Файл cookie auth зашифрован, и поскольку шифрование основано на ключе машины, оба приложения должны использовать один и тот же ключ для шифрования/дешифрования этого файла cookie.

Поскольку вы уже заявили, что оба они будут размещены в одном домене, это все, что нужно.

+0

Ну, база данных пользователей уже используется. Поэтому, если я правильно понимаю вас, это должно сработать. Я больше не работаю и не могу это проверить, но я думаю, что это не так. –

+2

Потому что вы не используете ключ машины. По умолчанию уникальный ключ генерируется и используется каждым приложением. Вам нужно удалить эту изменчивость и указать один и тот же машинный ключ в Web.config каждого сайта. –

+0

Я пробовал, и он работал на месте, но теперь у меня есть проблема - будет ли он работать и после балансировки нагрузки? –