Ваш инстинкт прав, что большинство работы будут на стороне сервера.При работе с OAuth и OpenID терминология может запутаться.На самом деле OpenID - это просто расширение поверх OAuth 2.0, которое немного модифицирует его для обеспечения аутентификации.Иначе;OAuth - это всего лишь механизм делегированной авторизации.
Вы должны ознакомиться с этой видеопрезентацией "OAuth 2.0 и OpenID Connect (на простом английском языке)" * .Это одно из лучших объяснений, которое более подробно описывает то, что я только что сказал.Это заставило меня пойти по правильному пути, чтобы понять больше.
Как бы просто это ни было теоретически, реализация этого материала может быть болезненной.В зависимости от вашего языка, инфраструктуры и доступных библиотек, наличие библиотеки, выполняющей слишком много работы для вас, может быть столь же запутанным.
Существуют разные потоки для разных вариантов использования.Вы можете выполнить то, что вы хотите, в Javascript SPA на основе браузера, но вам понадобится какое-то защищенное серверное приложение между браузером и поставщиком удостоверений.Будьте очень осторожны при проведении юридической проверки.
Возможно, вы обнаружите, что используемый вами поставщик удостоверений запрашивает дополнительные требования и параметры в дополнение к стандарту.Это может расстраивать, когда мы работаем с фреймворком, который не знает об этих требованиях.
Недавно я собрал игрушечный проект для login.gov
, потому что их официальные репозитории были наполовину испечены.и предположил, что ваш клиент работает на стороне сервера.Обратите внимание, что проект - это не само приложение React для браузера, а API, с помощью которого оно может аутентифицироваться.Я написал это в Spring Boot (язык: Kotlin).
Spring - это тот случай, когда он делает МНОГО работы за вас, но когда вам нужно настроить действие, то, как вы это делаете, может быть очень «волшебным» и запутанным.Преимущество Spring, для меня, в том, что его настройки по умолчанию довольно строги, и он заставляет вас понимать и задавать вопросы о том, что вы меняете, прежде чем делать это.
С другой стороны, нам повезло найти примерыAPI Express.js, которые работали из коробки или были проще в настройке.Проблема с этими решениями заключается в том, что вы можете спросить, насколько слабыми являются их значения по умолчанию.Кроме того, в моей работе есть определенные требования, которые делают развертывание Node.js не стартовым.
Для справки: когда речь заходит о React и экосистеме Javascript, я не думаю, что есть такая вещь, как "традиционный"знак равноВ этом мире все движется так быстро, но вы можете сказать, что React все еще свеж.