Как объединить две существующие веб-системы в одну систему авторизации / аутентификации

У нас есть 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"

/>

Надеюсь это поможет.

Другие вопросы по тегам