14

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

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

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

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

+0

Вы используете аутентификацию с помощью форм? Вы используете Identity? Чтобы уточнить, вы говорите, что клиентское приложение выполняет логины ... Предполагаю, вы имеете в виду что-то вроде браузера или мобильного приложения? Означает ли это, что клиент отправляет учетные данные на сервер и получает аутентификацию, или вы имеете в виду сервер, используемый сервером для аутентификации? –

+0

Что у вас есть (источник) контроля? веб-приложение? клиентское приложение? и то и другое? Можете ли вы передать «что-то» в клиентское приложение в веб-приложение, чтобы веб-приложение смогло пройти проверку подлинности? –

+0

ОК, чтобы быть более понятным, существует сайт www.MainWebApp.com, который размещается Стороной А. Этот сайт имеет логин, который выполняет аутентификацию против БД, размещенного Стороной A. После входа в систему они получают страницу со ссылкой, которая указывает на www.mywebapp.com/home/index, это сайт, на котором мы размещаем в нашей базе, с БД, также размещенным в нашем конце. В настоящее время на этой ссылке будет отображаться страница входа, которую я хочу удалить, и чтобы Сторона A отправила некоторую информацию вместе со ссылкой для получения разрешения. – Chinjoo

ответ

7

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

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

+0

Концепция здесь - основное приложение не поддерживается нами и, следовательно, оно должно быть минимальным изменением там и его в разных доменах. – Chinjoo

1

Я считаю, что самый простой способ - использовать 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/

+0

Исходный логин не выполняется нашей системой. Следовательно, у нас нет контроля над эмитентом Token. – Chinjoo

0

Я считаю, что лучшим подходом было бы провести у себя поставщика удостоверений, как 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

+0

У вас есть ссылки на образцы, чтобы проверить это? – Chinjoo

+0

Microsoft имеет пошаговое руководство здесь: https://msdn.microsoft.com/en-us/library/hh291061.aspx. Просто повторите шаги дважды, так что у вас есть два сайта и поместите ссылку на одну из них на другую. – DanL

0

Как насчет имитируя концепцию единого входа?

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