Лучший подход для SSO для приложения Asp.Net с использованием входа из внешнего приложения с несколькими ADFS

У меня есть уже построенное приложение Asp.Net, которое использует поставщик членства в Asp.Net.

Существует клиентское веб-приложение, которое имеет свой собственный логин. После входа в систему пользователь получает некоторые ссылки. Эти ссылки направлены на приложение, которое я разработал. В настоящее время, поскольку это два разных приложения, размещенных в двух доменах, требуется два входа в систему.

То, что я пытаюсь достичь, - это SSO и не нужно входить в систему, когда пользователь уже зарегистрирован в клиентском приложении. Я прочитал и кажется, что это можно сделать с помощью поставщика STS, такого как ThinkTecture IdentityServer и utlising ADFS с нашей стороны.

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

Ответы

Ответ 1

Это может быть возможно с провайдером STS или ADFS. То, что я хотел бы предложить, - иметь веб-приложение только для аутентификации, где, когда пользователь нажимает на логин на главном веб-сайте, вы можете перенаправить на приложение аутентификации, аутентифицировать и создать токен, а затем перенаправить обратно в основное приложение вместе с токеном. Позже вы можете вызвать любые приложения вместе с этим токеном и проверить, имеет ли пользователь разрешение на доступ к этому приложению или нет. Токен содержит информацию, такую ​​как аутентифицированный пользователь, разрешение и т.д. Я предполагаю, что вам нужно создать собственный http-модуль для реализации этого.

Если все приложения находятся под одним доменом, это может быть достигнуто с помощью файлов cookie.

Ответ 3

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

Оба приложения нужно будет изменить для поддержки протокола WS-Federation (у которого asp.net уже есть HTTP-модуль для его поддержки).

Прочитайте это https://msdn.microsoft.com/en-gb/library/bb498017.aspx

Затем также просмотрите этот блог http://chris.59north.com/post/Configuring-an-ASPNET-site-to-use-WS-Federation

Ответ 4

Как имитировать концепцию единого входа?

  • При щелчке ссылки, представленной на веб-сайте Party A, создается токен с отметкой времени.
  • Загрузите его в свою базу данных через службы
  • Шифровать токен с помощью RSA с дополнительными параметрами, согласовывая
  • Перенаправление на ваш URL с этим зашифрованным параметром, преобразованным в base64
  • Расшифруйте на своей стороне и проверьте маркер на своем веб-сайте, а затем разрешите использовать свой веб-сайт.
  • Напишите логику для того, чтобы токен был потерян в указанное время.