Ожидаемое поведение входа и выхода из ForgeRock (для единого входа) - PullRequest
0 голосов
/ 16 января 2019

Моя компания внедрила SSO с ForgeRock.Мы интегрировали два приложения (скажем, app1 и app2) для входа в систему, и количество приложений будет расти.Запросы на ожидаемую работу:

Поведение при входе в систему:

  1. Пользователь входит в систему app1 и начинает что-то делать в нем,
  2. Открывает новую вкладку / окно обращений URL app2 url.

Так что теперь вместо того, чтобы снова запрашивать учетные данные для входа в систему для app2 , он должен попасть прямо вдомашняя страница app2.Правильно?Но для того, чтобы и это произошло, как попадание app2 передаст app2 информацию о том, какой пользователь вошел в систему app1 ?Это из-за того, что браузер читает файлы cookie или входит в систему пользователя этой системы / компьютера?Если да, то как мы читаем вошедшего в систему пользователя и что, если приложение открыто для пользователей Интернета?Интернет-пользователи могут получить к нему доступ?В этом случае чтение вошедшего в систему пользователя может не иметь смысла, и некоторые из наших приложений работают в Интернете.

Поведение выхода из системы :

Если пользователь завершил свою работу над app1 и нажимает кнопку выхода, но находится в середине своей работы в app2 (скажем, отправка формы или любые многоэтапные действия), а также выход из него из app2 будет нечестным, поскольку он может потерятьон сделал до сих пор.Но так ли это должно работать?

Выход пользователя из одного приложения должен выходить из него из всех приложений, интегрированных с одним SSO?Если это так, это будет означать, что не следует делать недействительным сеанс на стороне приложения, а также отправлять запрос на SSO-сервер для выхода из системы.Но это также будет означать, что все приложения должны проверять каждый запрос, что если пользователь вышел из системы?Это слишком требовательно, я думаю.Для каждого запроса, который приходит к моему заявлению уже вошедшего в систему пользователя, я также должен проверить, был ли он вышел из системы единого входа или нет?Это как это должно работать?

1 Ответ

0 голосов
/ 16 января 2019

После долгих исследований, наконец, я понял:

Поведение при входе:

Верно!Если пользователь вошел в app1 и затем нажал на URL app2 в другой вкладке / окне того же браузера (не в приватном режиме) , то он уже должен войти в app2.Для app2 отдельный вход в систему не требуется.

Как app2 знает, какого пользователя войти в систему?

Это делается путем чтения файлов cookie всеми приложениями, интегрированными в SSO.Реализация SSO установит cookie в окне браузера пользователя для определенного домена, который будет доступен приложениям.Этот файл cookie сообщит приложениям, какой пользователь вошел в систему. И теперь приложения знают, кто этот аутентифицированный пользователь, и приложения могут выполнять свои конкретные действия, такие как проверка авторизации и другие обычные вещи.Но если пользователь использует другой браузер , скажем, для app1 chrome и для app2 firefox, то в этом случае, поскольку cookie-файлы не могут быть общими для app2, пользователь снова должен пройти процесс аутентификации.Это поведение останется неизменным независимо от того, работают ли приложения в Интернете или нет.

Поведение при выходе из системы:

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

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

...