Эссе о разработке игр, мышлении и книгах

Хотите крутой open source проект себе в портфолио? ru en

Запрос ко вселенной на человечный auth proxy (с) ChatGPT & Hieronymus Bosch.

Запрос ко вселенной на человечный auth proxy (с) ChatGPT & Hieronymus Bosch.

Как промежуточный итог моих мытарств с OAuth2/OIDC могу сказать, что столько текущих абстракций и частичных реализаций, как в современных open source аутентификационных прокси, я не встречал, как-минимум, давно. Может быть даже никогда не встречал.

И вот, конечно, хорошо, что они хотя бы есть и есть из чего выбрать. И ясно, что их делали энтерпрайзные разработчики для закрытия своих очень специфических энтерпрайзных болей, скорее всего, как параллельные проекты к основным продуктам. Но, всё-таки, её-моё…

Если вы вдруг хотите получить крутой open source проект в портфолио, то берите Rust или Go, пилите с нуля небольшой auth proxy с поддержкой OIDC и OAuth2, который тупо работает. Чтобы он был ориентирован не на корпорации с кубернетисами, а на небольшие компании и инди-разработчиков, которым нужно быстро закрыть пробел в фунцкиональности не изменяя код своих приложений. Ситуация когда вы правите код бэкенда, чтобы прокси заработал, — это дичь какая-то.

Вам в ноги кланяться будут :-) тем более, что сейчас OAuth2 резко всем стал нужен ещё больше, так как требуется в Model Context Protocol.

Вот чего надо от такого чуда:

  • Поддержка OIDC со всеми его редиректами.
  • Поддержка OAuth2 для апих.
  • Создание сессии, хранение её в Redis или БД, передача id в cookie.
  • Настройка свойств сессии и cookie.
  • Поддержка трёх видов url путей: требуют auth, не требуют auth, принимают auth опционально.
  • Проброс параметров пользователя (полученных от Identity Provider) в заголовки запроса к бэкенду.

И вот я посмотрел четыре прокси:

  • Первый не умеет хранить сессии в базе, поэтому всю инфу шифрует и кладёт в куки.
  • Второй не умеет во все редиректы OIDC: нельзя распределять пользователей между формами логина и регистрации в Keycloak.
  • Третий не умеет опциональную аутентификацию.
  • Четвёртый требует отдел devops для развёртывания и поддержки.

Причём все обвешаны кучей дополнительных фич, которые, на мой взгляд, очень опциональны для всех, у кого нет под рукой отдела devops.