Решение / архитектура единого входа (SSO) для одностраничного приложения (SPA)

Я уже некоторое время исследую решение SSO для SPA. Существует множество решений с небольшими различиями, хотя я также обнаружил, что не все имеют одинаковое понимание единого входа, и не так много устоявшихся шаблонов единого входа для SPA. Таким образом, я не спрашиваю о детальном дизайне / архитектуре, а просто пытаюсь увидеть, есть ли какие-либо общие практики по этой теме.

Что я имею в виду для SSO?

У нас есть несколько новых SPA, которые также разрабатываются (в том числе приложения для мобильных устройств и планшетов), которые будут развернуты на разных серверах и в разных доменах.У нас также есть центральный IdP (authServer), где будут храниться все идентификаторы пользователя.Однажды я захожу вспа1 и нажал кнопку, которая подводит меня кSPA2(или жеSPA3, SPA4потенциально), мне не нужно вводить учетные данные пользователя, и я буду автоматически входить в систему.

Какая разница для СПА? (в отличие от обычного веб-приложения)

Я посмотрел на несколько решений, даже старые решения, такие как SAML (просто хочу получить представление о SSO ..). мой нынешний кандидатOpenId Connect, но потом я понял разницу для SPA, если мое понимание верно:В отличие от обычных веб-приложений, SPA обычно не имеет (или мы стараемся не иметь) внутреннего сервера. У SPA есть только сервер, обслуживающий статические страницы вместе со скриптами, таблицами стилей и изображениями.

Теперь возникает проблема:

OpenId Connect основывается наOAuth2 Код авторизации тип предоставления, что означает либо:

Мне нужен внутренний прокси-подобный модуль для каждого SPA, если я хочу, чтобы он работал.Я использую другое решение для SSO на стороне клиента, напримертот, который обеспечивает auth0Я не нашел другого решения / примеров

Мой вопрос:

Для пункта 1 выше, верно ли мое понимание? Что лучше, чтобы у SPA не было внутреннего кода, как у обычного веб-приложения?

Для вышеупомянутого пункта 2 это звучит как решение, но как это существенно отличается отOAuth2 неявный тип гранта?

И есть ли другие решения (фреймворк, протокол и т. Д.), Которые я должен знать, но еще не исследовал?

Ответы на вопрос(1)

Ваш ответ на вопрос