Как объединить две существующие веб-системы в одну систему авторизации / аутентификации
У нас есть 2 независимых веб-системы (обе имеют независимые системы аутентификации). Одна из систем в ASP.MVC4.
Как их можно объединить... просто и легко использовать одну систему аутентификации / авторизации.
ОБНОВЛЕНИЕ: предположим, что у нас есть единый вход, и оба веб-приложения находятся в разных сетях, разделенных Интернетом. Как обезопасить общение для отправки токена через Интернет безопасным способом?
2 ответа
Вы должны реализовать SSO. Это будет зависеть, если вы используете тот же домен или нет:
Один и тот же домен. Достигнуть этого очень просто, установив свойство домена cookie-файла проверки подлинности форм в корневой домен и сконфигурировав одинаковые машинные ключи для обоих приложений. Убедитесь, что целевой framework.Net одинаков.
Междоменный SSO более сложен, есть много шагов:
- Настройте основной домен для входа пользователей. Например logon.com
- Когда неаутентифицированный пользователь пытается получить доступ к защищенному ресурсу в некоторых из 2 приложений, он перенаправляется в домен входа в систему для аутентификации.
- Пользователь аутентифицируется, и домен входа в систему генерирует идентификатор сеанса, содержащий имя пользователя вошедшего в систему пользователя. Этот идентификатор сеанса зашифрован с использованием симметричного алгоритма с общим секретом между 3 доменами. Домен входа также устанавливает cookie проверки подлинности форм, чтобы указать, что пользователь уже прошел проверку подлинности
- Домен входа перенаправляется обратно к защищенному ресурсу, передавая идентификатор сеанса.
- Приложение, содержащее защищенный ресурс, расшифровывает идентификатор сеанса, чтобы извлечь имя пользователя и установить cookie проверки подлинности форм в своем домене.
- Пользователь запрашивает защищенный ресурс на втором домене
- Поскольку он еще не аутентифицирован, он перенаправляется в домен входа
- Пользователь уже аутентифицирован в домене входа, и идентификатор сеанса с использованием той же технологии генерируется и передается обратно.
- Второй домен расшифровывает идентификатор сеанса, чтобы извлечь имя пользователя и создать файл cookie для проверки подлинности форм для второго домена.
Вы можете найти больше информации здесь
Самый простой способ поделиться аутентификацией форм - заставить оба приложения читать куки аутентификации друг друга.
Это возможно, только если оба ваших приложения находятся в одном домене. Если они не находятся в одном домене, то cookie не будет передаваться между приложениями.
Чтобы каждое приложение могло обмениваться файлами cookie, им необходимо иметь одинаковый ключ компьютера, определенный в их файлах Web.config.
Вручную добавьте один и тот же элемент ключа машины в каждую веб-конфигурацию вашего приложения, как показано ниже.
<machineKey
validationKey="CF4B1F0C30234C61CC44A26389CE218C77E9CB76C4FFB56AE24F9DDAAF251749408EA3E3B72EB9B29AF502F5533B59B4A9D1CEB7708D37CC9A53F18DDF66E84F"
decryptionKey="A4174A48728061A454B419DBB61AD4262AB1C45309D9AB7219760674CF880C2C"
validation="SHA1" decryption="AES"
/>
Надеюсь это поможет.