SAML / SSO Ajax-запросы между двумя SP - PullRequest
5 голосов
/ 07 июля 2011

Мой мозг вот-вот взорвется от непонимания SSO / SAML.В настоящее время я работаю над проектом, в рамках которого мы реализуем SSO-провайдер идентификации, используя shibboleth.

У нас запущен SSO, и мы можем проходить аутентификацию с помощью одного приложения и переходить к другому без изменений.Теперь следующее требование - приложение A возвращает страницу, которая делает вызов Ajax приложению B без каких-либо проблем.

Теперь, когда у нас все настроено для работы на переднем канале (через перенаправления браузера), тогда, когда мы выполняем вызов Ajax для приложения A, мы получаем ответ 301, и начинаются перенаправления между SP / IdP, которые, очевидно, Ajaxне следует

Если, с другой стороны, мы выполняем Ajax-вызов из приложения A в приложение A, то он отправляет через свой локальный идентификатор сеанса и не нуждается в переадресации для связи с IdP.

Теперь, если я вручную перейду к приложению B через браузер и разрешу все перенаправления (и, следовательно, получу локальный cookie-файл для приложения B тоже).Тогда я все еще не могу сделать Ajax-запросы из ответа приложения A. Очевидно, это связано с тем, что браузер не будет отправлять информацию о файлах cookie для приложения B, поскольку мы попадаем на страницу в домене приложения A.

Итак, мои вопросы таковы:

  • Если приложение A и приложение B являются дочерними поддоменами, можем ли мы каким-то образом заставить браузер пропустить все необходимые сеансовые файлы cookie?

  • Я понимаю, что такого рода связь Sp / IdP может происходить по обратному каналу в отличие от перенаправлений, которые происходят через браузер.Я не понимаю, как это возможно :-).Если я вхожу через приложение A, то IdP добавляет свой собственный файл cookie сеанса, поэтому ему не нужно повторно проходить проверку подлинности, когда перенаправления происходят после посещения приложения B. Но, если это не было сделано с помощью перенаправлений, то при посещении приложения Bчто он может отправить в IdP для аутентификации, так как мой браузер не передает куки IdP в приложение B в первую очередь.

Примечание:

Извините, если это не слишком ясно, я действительно не могу сейчас это объяснить очень хорошо.Может быть, мне лучше объяснить, чего мне нужно достичь.

  • Нажмите приложение и войдите в систему с помощью единого входа.
  • Приложение, в которое я вошел, является приложением типа портала с кучей виджетов ajax.
  • Каждый виджетделает вызовы Ajax другим приложениям, которые также защищены SSO

Есть идеи?Ура, Крис.

...