Лучший подход для SSO для приложения Asp.Net с использованием входа из внешнего приложения с несколькими ADFS
У меня есть уже построенное приложение Asp.Net, которое использует поставщик членства в Asp.Net.
Существует клиентское веб-приложение, которое имеет свой собственный логин. После входа в систему пользователь получает некоторые ссылки. Эти ссылки направлены на приложение, которое я разработал. В настоящее время, поскольку это два разных приложения, размещенных в двух доменах, требуется два входа в систему.
То, что я пытаюсь достичь, - это SSO и не нужно входить в систему, когда пользователь уже зарегистрирован в клиентском приложении. Я прочитал и кажется, что это можно сделать с помощью поставщика STS, такого как ThinkTecture IdentityServer и utlising ADFS с нашей стороны.
Является ли это лучшим подходом, и если да, я не мог найти большую часть документации относительно того, какие обновления мне нужно просить у основной группы приложений, чтобы она включала SSO.
Ответы
Ответ 1
Это может быть возможно с провайдером STS или ADFS. То, что я хотел бы предложить, - иметь веб-приложение только для аутентификации, где, когда пользователь нажимает на логин на главном веб-сайте, вы можете перенаправить на приложение аутентификации, аутентифицировать и создать токен, а затем перенаправить обратно в основное приложение вместе с токеном. Позже вы можете вызвать любые приложения вместе с этим токеном и проверить, имеет ли пользователь разрешение на доступ к этому приложению или нет. Токен содержит информацию, такую как аутентифицированный пользователь, разрешение и т.д. Я предполагаю, что вам нужно создать собственный http-модуль для реализации этого.
Если все приложения находятся под одним доменом, это может быть достигнуто с помощью файлов cookie.
Ответ 2
Я считаю, что самый простой способ - использовать Azure Active Directory для этого. Вот несколько статей/информации об этом:
http://www.dotnetcurry.com/windows-azure/1123/secure-aspnet-mvc-azure-using-active-directory-signon
http://azure.microsoft.com/en-us/documentation/videos/overview-of-single-sign-on/
Ответ 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
- Расшифруйте на своей стороне и проверьте маркер на своем веб-сайте, а затем разрешите использовать свой веб-сайт.
- Напишите логику для того, чтобы токен был потерян в указанное время.