OAuth flows для SPA с бэкендом
От: Stalker. Австралия  
Дата: 22.02.19 23:32
Оценка:
В OAuth для веб приложений традиционно существует 2 типа flow: Implicit Flow и Auth Code Flow, в первом случае токен возвращается напрямую в браузер юзера в параметрах url, во втором — требуется бэкенд для обмена кода на токены. Стандартные рекомендации — для обычных asp.net приложений Auth Code Flow т.к. есть секьюрный бэкенд, для SPA — Implicit Flow.
Проблема Implicit Flow в том, что он недостаточно безопасен (токен из парамеров урла может утечь хакеру несколькими способами), но это применялось т.к. другого пути просто не было. Сейчас (с появлением CORS) появился новый flow — PKCE, некоторый компромис между 1 и 2-м методами
Я никак не могу до конца понять, почему принципиально игнорировался тот факт, что "чистых" SPA не так и много, у них всегда есть свой бэкенд, и ничто не мешает имплементировать Auth Code Flow с его участием: первая часть flow выполняется в SPA, получив code тот перенаправляет его в свой бэкенд, который добавляет свой секрет и получает токен в обмен на код, после чего отдает его обратно в SPA. Таким образом нет проблем, от которых страдает Implicit Flow, и он более секьюрный чем PKCE т.к. используется секрет
В интернете не особо статей по этому поводу, единственный довод против который я нашел — это использование 2-х компонентов для единого flow, и я согласен с этим, но все-же хотелось-бы знать какие реальные проблемы для безопасности, за исключением идеологических, это может принести
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.