Ответ 1
Зачем вам нужно решение для единого входа.
Поскольку аутентификация ASP.NET на самом деле основана на основном cookie, есть две вещи, на которые нужно смотреть:
- Правильно настройте файлы cookie.
- Откажитесь от пользователей в альтернативный домен во время регистрации.
Глядя на обе эти глубины:
1. Правильная настройка файлов cookie
Вам нужно убедиться, что ASP.NET записывает cookie аутентификационного билета в корневой домен, а не в явный домен, это выполняется с помощью атрибута domain
элемента forms:
<forms
name="name"
loginUrl="URL"
defaultUrl="URL"
domain=".example.com">
</forms>
Вы должны установить свой домен на ".example.com" - обратите внимание на главный период - это ключ. Таким образом, запросы на example.com и www.example.com будут корректно читать cookie и аутентифицировать пользователя.
2. Откачать пользователей в альтернативном домене
То, что мы реализовали на нескольких сайтах, использующих один знак, - это процесс входа в оба конца. Пользователь аутентифицируется в первом домене, мы шифруем данные для входа и перенаправляем их на известную страницу во втором домене, регистрируем их там, а затем перенаправляем обратно на исходный сервер.
Это перенаправление на стороне клиента имеет важное значение - файлы cookie записываются только тогда, когда на клиент возвращается ответ, и браузер должен посетить второй домен, чтобы увидеть куки файлы.
Другие детали, которые необходимо учитывать при такой настройке:
- Вероятно, вы хотите получить тайм-аут в зашифрованных деталях входа, чтобы напомнить, что этот URL-адрес из истории браузера не автоматически регистрирует пользователя.
- Если домены находятся на разных серверах, вам необходимо убедиться, что либо машинные ключи настроены одинаково, чтобы вы могли правильно зашифровать и дешифровать данные, либо использовать другой общий ключ.
- Вероятно, вам захочется создать механизм для вызова пользователей ReturnUrl с исходного сервера, чтобы вы могли отправить их обратно в нужное место.
Вы также можете взглянуть на Аутентификация форм на всех приложениях