Вот основные шаги из RFC 7636.
- Клиент включает криптографический секрет с запросом кода авторизации к конечной точке аутентификации
- Сервер аутентификации возвращает код авторизации ссекрет, зашифрованный в коде или сохраненный на сервере аутентификации
- Клиент отправляет код аутентификации с секретом на конечную точку токена
- Сервер аутентификации проверяет секрет и отвечает токеном
Таким образом, сервер authz возвращает токен только в том случае, если секрет подтвержден как тот, который был отправлен ранее для кода authz.
Как вы предполагаете, это не работает лучше , чем реализация OAuth 2.0, которая отвергает многократное использование одного и того же кода авторизации. Но , он предназначен для предотвращения использования кода авторизации, который не связан с тем, который был отправлен ранее и связан с этим секретом, или с кодом, который был отправлен ранее и который не имеет правильного секрета.
Если бэкэнд обрабатывает связь с сервером authz и делает это через TLS, ему не нужно беспокоиться об атаках кода authz. Но тип предоставления кода авторизации является потоком на основе перенаправления. Возможно, вам лучше будет использовать тип предоставления учетных данных клиента. Веб-приложение здесь означает то, которое действует как клиент.