Предоставление гранта для нативных приложений

У меня есть кое-что прояснить относительно следующего. Спецификация "OAuth 2.0 для собственных приложений" гласит:

Однако, поскольку неявный поток не может быть защищен PKCE [RFC7636] (что требуется в разделе 8.1), использование неявного потока с собственными приложениями НЕ РЕКОМЕНДУЕТСЯ.

Это рассуждение о том, почему мы не должны использовать неявный тип предоставления, привело меня в замешательство.

Как я понимаю, PKCE требуется для предоставления кода авторизации, поскольку для получения токена доступа требуется 2 отдельных вызова, и мы должны убедиться, что оба эти запроса выполняются одним и тем же приложением. Пожалуйста, поправьте меня, если я ошибаюсь.

И теперь, поскольку неявному типу предоставления не нужны такие 2 вызова для получения токена, я не думаю, что нам действительно нужен PKCE там. Опять поправьте меня, если я не прав.

Это означает, что "неявный поток не должен быть защищен PKCE". Тогда почему "неявный поток не может быть защищен PKCE" стал причиной, приведенной выше, чтобы не использовать его для собственных приложений?

1 ответ

Решение

Как я понимаю, PKCE требуется для предоставления кода авторизации, поскольку для получения токена доступа требуется 2 отдельных вызова, и мы должны убедиться, что оба эти запроса выполняются одним и тем же приложением.

Первая часть предложения не верна, вторая ("нам нужно убедиться..."). PKCE не требуется из-за 2 запросов - два запроса позволяют реализовать PKCE. Проблема в том, кто может украсть код / ​​токен, прежде чем он достигнет приложения, которое его запросило. Неявный поток имеет те же проблемы безопасности, что и поток кода авторизации - описанный в разделе 8.1 RFC. Без PKCE, если злоумышленник получает код или токен доступа, он может сразу использовать токен или сначала обменять код на токены. С PKCE код бесполезен, не зная code_verifier,

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

И в зависимости от того, какую опцию перенаправления URI вы выберете, может возникнуть проблема с доставкой фрагмента части URL перенаправления (используемой неявным потоком для передачи токенов) в приложение. Но я не уверен в этой части.

Другие вопросы по тегам