После долгих исследований, наконец, я понял:
Поведение при входе:
Верно!Если пользователь вошел в app1 и затем нажал на URL app2 в другой вкладке / окне того же браузера (не в приватном режиме) , то он уже должен войти в app2.Для app2 отдельный вход в систему не требуется.
Как app2 знает, какого пользователя войти в систему?
Это делается путем чтения файлов cookie всеми приложениями, интегрированными в SSO.Реализация SSO установит cookie в окне браузера пользователя для определенного домена, который будет доступен приложениям.Этот файл cookie сообщит приложениям, какой пользователь вошел в систему. И теперь приложения знают, кто этот аутентифицированный пользователь, и приложения могут выполнять свои конкретные действия, такие как проверка авторизации и другие обычные вещи.Но если пользователь использует другой браузер , скажем, для app1 chrome и для app2 firefox, то в этом случае, поскольку cookie-файлы не могут быть общими для app2, пользователь снова должен пройти процесс аутентификации.Это поведение останется неизменным независимо от того, работают ли приложения в Интернете или нет.
Поведение при выходе из системы:
Существуют различные варианты, которые можно выбрать.Там нет жесткого правила.Если вы хотите, чтобы выход из одного приложения также подразумевал выход из всех других приложений, то да, это можно сделать.Один из способов - передать "токен" , установленный реализацией единого входа, в cookie-файле браузера во всем запросе.Если на стороне приложения получен действительный токен, то выполните этот запрос, иначе выйдите из него.
Также, если у вас все в порядке с другими приложениями, работающими, когда одно приложение вышло из системы, вам не нужно передавать токен вкаждый запрос и выход из системы должны выполняться только на уровне приложения. Нет необходимости запрашивать SSO для выхода из системы.