Ознакомиться с OpenID и OAuth действительно сложно: нужно пройти десятки спецификаций, и, что еще хуже, два протокола используют разную терминологию. Чтобы помочь, Pragmatic Web Security предлагает бесплатный отличный курс по OAuth и OIDC 101.
Это полноценный курс с видео, текстами, демонстрационными сценариями, заданиями и оценками, направленный на демистификацию как OAuth, так и OIDC в их основе и их взаимосвязи.
Он полагается на облачного поставщика удостоверений Auth0 для запуска потоков OAuth 2.0 и OpenID Connect, поскольку настройка клиента Auth0 проста и бесплатна. Конечно, обратите внимание, что использование Auth0 не следует рассматривать как одобрение.
Что касается самого материала, он разбит на шесть глав:
Концептуальная идея OAuth 2.0 и OpenID Connect
Использование OAuth 2.0 с внутренними веб-клиентами
Представляем OpenID Connect
Мобильные и нативные клиенты
Фронтенд веб-клиенты
Дополнительные потоки
Резюме и заключение
Сценарий использования, который выполняется на протяжении всего курса, — это Restograde, приложение для обзора ресторанов, которое позволяет пользователям оставлять отзывы о своих любимых ресторанах. Это не более чем простое интерфейсное приложение, которое подключается к внутреннему API, которое, в свою очередь, подключается к базе данных за кулисами.
Пока все хорошо, и нет необходимости в сложных схемах авторизации, таких как OAuth. Но возникла потребность в том, чтобы сторонние приложения могли подключаться к API Restograde. Это касается другого приложения под названием Virtualfoodie, которое имеет схожую с Restograde функциональность, поскольку позволяет пользователям исследовать рестораны и оценивать их. Теперь он хочет интегрировать данные пользователей Restograde, чтобы предоставить более богатый опыт своим собственным пользователям.
Таким образом, Virtualfoodie необходимо связаться с API Restograde и для этого авторизоваться — это можно сделать с помощью OAuth. Кроме того, Virtualfoodie хочет разрешить своим пользователям входить в систему с учетными данными Retrograde, и для этого мы используем OpenID.
Ключевое различие здесь — аутентификация и авторизация. OAuth обеспечивает авторизацию между клиентами и API, в то время как OpenID разрешает аутентификацию пользователя через поставщика удостоверений.
Вводная глава отлично помогает увидеть вещи в перспективе, четко разграничивая область действия OAuth и варианты использования.
В следующих главах рассказывается о потоках OAuth. Мы узнаем, насколько легко реализовать настраиваемую службу токенов безопасности на платформе Auth, зарегистрировать серверный клиент и включить сценарии единого входа через OpenID, передав аутентификацию централизованным поставщикам.
После рассмотрения того, как серверные приложения / серверные API подключаются в потоке OAuth, класс имеет дело с собственной и мобильной клиентской стороной потока, что, как показано, не так безопасно, как в случае серверных приложений.
Затем мы переходим к интерфейсным клиентам и SPA (приложениям с одиночными страницами), которые имеют свои собственные проблемы. Исходная спецификация OAuth 2.0 определяет четыре различных потока OAuth 2.0:
Поток кода авторизации
Неявный поток
Поток учетных данных пароля владельца ресурса
Поток учетных данных клиента
Традиционные веб-клиенты, созданные с помощью HTML и jQuery, по-прежнему используют неявный поток, который, однако, считается устаревшим, в то время как более новые аналоги SPA следуют потоку кода авторизации с PKCE. В настоящее время по-прежнему актуальны первый и последний потоки. Рассмотрение этих дополнительных потоков и после краткого обзора занятие завершено.
Подводя итог, можно сказать, что это хорошо спланированный и выполненный курс. Интерфейс чистый, материал хорошо организован и связан, инструктор выразил спокойствие и не торопился с объяснением концепций, что также подтверждается сопровождающими четкими анимированными диаграммами.
Хотя «Введение в OAuth2.0 и OpenID Connect» является бесплатным, инструктор, доктор Филипп Де Рик, также предлагает более продвинутый «Освоение OAuth 2.0 и OpenID Connect» в качестве платного дополнения. Если вы хотите углубиться в тему из-за вашей работы или других требований, я, безусловно, порекомендую его, судя по хорошему опыту его бесплатного аналога.