2016-01-27 6 views
1

Я хочу выполнить SSO между двумя веб-приложениями. Вот мой сценарий:SSO для двух приложений, использующих разные поставщики идентификационных данных

Приложения A & B (оба предоставляют RESTFUL API). Приложение B использует проверку подлинности на основе форм, и я не могу вносить никаких изменений в приложение B. Кроме того, приложение A и приложение B поддерживают разные хранилища пользователей для аутентификации.

Пользователь регистрируется в приложении A и после успешной регистрации регистрируется в приложении A и вызывает API из приложения B, для которого требуется аутентификация пользователя.

Целью является то, что после входа пользователя в приложение A они должны иметь возможность вызывать аутентифицированный API приложения B без необходимости входа в приложение B снова.

Я прошел через облачные SSO-решения, предоставляемые PingIdentity, Stormpath и несколькими другими поставщиками, и похоже, что для SSO для нескольких приложений требуется, чтобы либо все приложения должны доверять тому же поставщику идентификаторов, либо приложения должны понимать SAML/Open Я БЫ. Кроме того, мне потребовалось бы изменить способ, которым приложение B обрабатывает аутентификацию (но я не могу вносить какие-либо изменения в приложение B.

Я подумал о простом решении для моего сценария (что в некотором роде является также методом SSO http://www.opengroup.org/security/sso/sso_intro.htm)

После входа пользователя в приложение A сервер сделает вход в фоновый режим в приложение B (используя предварительно настроенные учетные данные по умолчанию для приложения B). В ответ на этот логин приложение B выдает сеансовый файл cookie который будет передан в последующих вызовах API в приложение B. Этот подход имеет недостатки в использовании учетных данных по умолчанию для приложения B, но он прост и будет работать.

Однако, Прежде всего, я хотел бы знать, может ли этот сценарий обрабатываться по-разному с использованием стандартных решений SSO?

+0

Эксперты. Любые указания по этому поводу? – ga016556

ответ

2

Традиционно существует некоторый «клей», который связывает приложения единого входа. Между двумя приложениями должно быть присущее доверие. Обычно это делается с протоколами (SAML/Open IDC) или разделяемыми секретами (для проверки подписей).

В описываемом вами сценарии, где вы не имеете контроля или доступа к тому, как аутентифицируется приложение B, вам всегда нужно пройти аутентификацию «в фоновом режиме» в приложении B и сохранить его в своем cookie сеанса для последующих запросов.

Однако это по своей сути небезопасно. Это эффективно создает анонимный вход в приложение B, которое вы используете для всех пользователей приложения A. Что касается приложения B, то он всегда будет тем же самым пользователем.

Если у вас была возможность создать учетной записи в приложении B, чтобы для каждой учетной записи в приложении А у вас была аналогичная учетная запись в приложении B, в которую вы вошли, это было бы более безопасно.

Надеюсь, это поможет!

Полное раскрытие информации: Я работаю для Stormpath.

+0

Большое спасибо за помощь @afitnert. Это уточняет мой сценарий. Как вы сказали, я тоже чувствую, что подход аутентификации в фоновом режиме небезопасен, но что-то, к чему я должен буду прибегать прямо сейчас. – ga016556

 Смежные вопросы

  • Нет связанных вопросов^_^