OAuth2: использование PKCE вместо client_secret

У меня есть веб-приложение, которое использует неявный грант OAuth2 для аутентификации.

Я бы хотел, чтобы моя сессия была активной в течение длительного времени, используя токены обновления. Но так как я не могу безопасно хранить client_secret в веб-приложении, я не могу использовать традиционное предоставление кода авторизации.

Безопасно ли использовать PKCE вместо client_secret или я теряю некоторый уровень безопасности при этом?

2 ответа

Да. Хотя PKCE более безопасен, чем НЕ использует его; неявное предоставление с PKCE все еще оставляет маркер доступа, который может быть выставлен владельцу ресурса и, возможно, другим приложениям, расположенным на том же устройстве.

PKCE в первую очередь защищает от того, когда злоумышленник перехватывает код авторизации, возвращенный из конечной точки авторизации в пределах канала связи, не защищенного с помощью безопасности транспортного уровня (TLS).

Implicit Flow подходит только для клиентских приложений OAuth на основе браузера или мобильных устройств JavaScript NOT, а также других приложений, которые могут использовать код авторизации.

С неявным предоставлением вы не можете использовать ни PKCE, ни токены обновления. Если вы хотите улучшить безопасность, то вам следует добавить серверную часть в ваше веб-приложение, которое может хранить client_secret (или используйте альтернативный метод аутентификации клиента). PKCE не понадобится.

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