Предоставление гранта для нативных приложений
У меня есть кое-что прояснить относительно следующего. Спецификация "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 перенаправления (используемой неявным потоком для передачи токенов) в приложение. Но я не уверен в этой части.