PKCE предназначен для того, чтобы гарантировать, что клиент, который запросил пользователя для аутентификации, это тот же самый клиент, который обменивает код авторизации для токена доступа.
Вся связь с сервером авторизации использует HTTPS, go трудно перехватить. Но некоторые мобильные платформы позволяют (вредоносным) приложениям регистрировать тот же redirect_uri, что и законный клиент. Это означало, что когда сервер авторизации перенаправлялся обратно к клиенту с кодом авторизации, с кодом вызывался бы и законный клиент, и злонамеренный клиент. Это позволило злонамеренному клиенту обменять код на токен доступа, поскольку проверка подлинности клиента не выполняется.
PKCE решает эту проблему путем включения code_challenge в запрос проверки подлинности, который представляет собой ha sh средства проверки кода. , Затем требуется фактический верификатор в вызове обмена токеном. Вредоносный клиент не имеет верификатора и поэтому не может аутентифицировать себя и, следовательно, не обменивать код на токен.