Как войти в учетную запись пользователя на веб-сайте после входа на другой веб-сайт с помощью ACS

У меня есть один веб-сайт, настроенный на использование Azure ACS. Когда пользователь входит на этот веб-сайт, как я получу удостоверение пользователя, когда он посетит другой мой веб-сайт, чтобы пользователю не нужно было выбирать и входить в систему своего поставщика удостоверений в ACS? Есть ли способ получить удостоверение пользователя от ACS на нескольких веб-сайтах, чтобы после входа пользователя на один из моих веб-сайтов он распознавался как зарегистрированный пользователь при посещении других веб-сайтов, настроенных ACS? Кстати, я использую все 4 сайта социальных сетей в azure ACS в качестве поставщиков удостоверений.


person AshT    schedule 29.04.2013    source источник
comment
нет готового способа добиться этого. Но, учитывая, что вы контролируете все сайты, вы можете кое-что сделать. Я пытаюсь понять, как поместить это в один ответ. Потому что это не так прямолинейно, как хотелось бы.   -  person astaykov    schedule 29.04.2013
comment
Не могли бы вы предоставить мне ссылки на соответствующие ресурсы? Буду ли я на правильном пути, если реализую гибридный подход с аутентификацией на основе утверждений и на основе ролей? Я бы просто создал своего собственного поставщика удостоверений, который функционирует как репозиторий пользователей для всех веб-сайтов, и чтобы веб-сайты проверяли, вошел ли пользователь в систему по IP? Но я не уверен, сработает ли это или есть ли другой способ сделать это.   -  person AshT    schedule 29.04.2013
comment
Один глупый подход, который я мог бы придумать, заключается в том, что, как только вы аутентифицируете пользователя через ACS, передайте обратно на свой веб-сайт некоторый зашифрованный токен, который содержит личность пользователя. Передавайте этот токен всякий раз, когда вы переходите с одного сайта на другой. Всякий раз, когда вы обнаружите на стороне вашего сервера токен, отправленный как нулевой или недействительный, предположите, что пользователь не вошел в систему. Если все веб-сайты находятся в одном домене, вы можете использовать cookie для легкой передачи токена. Не думал о плюсах и минусах, но кажется законным.   -  person letsc    schedule 13.05.2013


Ответы (1)


Каждый веб-сайт отличается с точки зрения ACS, поэтому токены, которые он будет выдавать, также отличаются. Однако SSO происходит на уровне IdP:

  1. Пользователь входит в систему с помощью Google (в качестве примера) на веб-сайте 1.
  2. Пользователь переходит на WebSite2 (с тем же экземпляром браузера), WebSite2 перенаправляет на ACS, ACS перенаправляет на Google
  3. Пользователь уже прошел аутентификацию в Google, возвращается в ACS
  4. ACS выдает токен (для WebSite2) и возвращает на WebSite2

ACS не поддерживает сеансы с пользователями, поэтому они будут вынуждены выполнить всю транзакцию хотя бы один раз.

Что может случиться, так это то, что если у вас есть 4 социальных IdP (предположительно, Google, Live, FB, Yahoo), на шаге 2 ACS предложит пользователю использовать IdP.

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

person Eugenio Pace    schedule 29.04.2013
comment
Как перенаправить на определенного IdP (например, O365) в ACS, когда есть +1. Какой параметр whr использовать? - person Jorge; 05.11.2015
comment
Я бы не рекомендовал больше использовать ACS, так как он устарел. - person Eugenio Pace; 11.11.2015