Код авторизации Oauth PKCE: как сохранить контекст в SPA за пределами перенаправления 302?

В настоящее время я разрабатываю сервер авторизации Oauth, который позволяет «предоставить код авторизации», и я хотел бы использовать PKCE, потому что я видел, что он может быть в Oauth2.1, и он кажется (немного) более безопасным, чем классический «код авторизации» .

Я также разрабатываю приложение SPA, используя Vue.js в качестве клиента Oauth.

Я сделал первые шаги PKCE: сгенерировал верификатор кода и запрос кода на стороне клиента и отправил запрос GET / авторизации, содержащий client_id, response_type = code, redirect_uri, code_challenge и code_challenge_request.

Мой запрос GET / authorize возвращает код перенаправления 302, которому будет следовать клиентский браузер. На этом этапе из-за перенаправления я теряю свой контекст на стороне клиента и поэтому теряю code_verifier, который мне понадобится в конце потока во время запроса POST / токена.

Поэтому я не понимаю, как использовать поток PKCE с SPA, я ничего не нашел об этом в Интернете, а RFC просто сказал, что следуйте перенаправлению и используйте верификатор кода, и я не знаю, как это сделать.

Я думаю, что могу сохранить этот code_verifier в небезопасном файле cookie, но я надеюсь, что есть лучшее решение.


person Jop297    schedule 29.07.2020    source источник


Ответы (1)


Библиотека OIDC Client сделает это за вас с помощью одинарных вкладышей. Существует несколько сложных областей безопасности SPA, и библиотека сделает за вас всю тяжелую работу.

МОИ РЕСУРСЫ

Обратите внимание, что в моем методе handleLoginResponse вы можете получить состояние до перенаправления входа в систему, и вам вообще не нужно писать какой-либо код PKCE.

person Gary Archer    schedule 29.07.2020