Давайте скажем i go приложению для входа в систему и войдите в систему, получив доступ к бэкэнду. Как доставить токен на app1.company.com?
Проблема в том, что login.company.com доставляет токен в качестве параметра в URL-адресе, поскольку сайт может проверять подлинность маркера путем проверки цифровой подписи или с указанием конечной точки c в центральном домене аутентификации. Вот как openid / oauth2 делает это, используя «неявный» поток, хотя они также позволяют отправлять токен как POST или использовать двухэтапный поток (поток «authorization_code»)
Допустим, пользователь хочет go до app2. если мы не можем поделиться токеном из app1 с iframes или любым другим методом, то это приложение должно быть перенаправлено для входа в систему и повторного выполнения процесса как app1, что нам подходит. Но так ли это на самом деле?
Вы можете разделить токен между доменами, используя внутренний iframe, но в вашем случае я бы рекомендовал каждому домену использовать свой собственный токен.
если токен больше недействителен и мы получаем ошибку из бэкэнда, следует ли нам перенаправить приложение входа в систему в другом поддомене (вставить URL-адрес, к которому мы хотим go вернуться после успешного входа в систему)?
Да, в номере 2) вашего чертежа, просто перенаправьте с app2.company.com на login.company.com и выполните тот же процесс, что и в 1). Вам потребуется какой-то тип повара ie на login.company.com, чтобы избежать повторного запроса учетных данных у пользователя
Могу ли я просто использовать стороннюю службу Open id connect?
Да, вы можете использовать внешнюю службу OpenIdConnect или развернуть на login.company.com сервер OpenIdConnect, такой как IdentityServer или KeyCloak
Должен ли я рассмотреть возможность использования микро-интерфейсов для создания всех «приложений» в том же домене?
Нет необходимости иметь центральный домен аутентификации
Как "Attlassian" в качестве примера обрабатывает этот процесс?
Я точно не знаю, как это делает Attlassian, но в настоящее время большинство веб-сервисов поддерживают OpenIdConnect