Публичный клиент не может надёжно защитить общие учётные данные, конфиденциальный может. Это не отменяет необходимость защиты конкретного обмена.
Публичный клиент OAuth
Определение
Публичный клиент OAuth — приложение, которое не может надёжно скрыть свои общие учётные данные от пользователя устройства или браузера.
Также ищут: Public OAuth client · встроенное приложение OAuth · браузерный клиент OAuth
Зачем это знать
Классификация клиента зависит от защиты учётных данных в месте исполнения. Одно название продукта не позволяет смешать публичную браузерную часть с защищённым сервером.
Карта понятия
Сравнить
Связано
Что подтверждено
Публичный клиент не способен сохранить свои общие учётные данные в тайне, например когда код выполняется на устройстве владельца ресурса.
Граница применимости: Типы клиентов OAuth 2.0.
PKCE защищает каждый обмен кода авторизации новым случайным значением, но не превращает встроенный общий секрет в защищённые учётные данные.
Граница применимости: Защита выдачи по коду для публичного клиента.
Если одинаковый секрет встроен во все распространяемые экземпляры приложения, его наличие не превращает их в конфиденциального клиента. PKCE использует новое значение для обмена, но не делает встроенный общий секрет недоступным владельцу устройства.
Граница применимости: Редакторский пример публичного размещения клиента; защищённая серверная часть того же продукта может иметь другую классификацию.
Идентификатор клиента не является секретом и не должен сам по себе использоваться как аутентификация клиента. Публичный идентификатор клиента указывает регистрацию, а не доказывает владение защищёнными учётными данными.
Граница применимости: Идентификатор клиента по RFC 6749, раздел 2.2; это свойство не означает анонимность всех последующих запросов.
У одного продукта браузерная часть может быть публичным клиентом, а защищённая серверная часть — конфиденциальным. Классификацию проводят по месту исполнения и защите учётных данных, а не по названию продукта.
Граница применимости: Редакторский пример распределённого приложения по типам RFC 6749. PKCE отдельно привязывает конкретный обмен к экземпляру клиента.
Не путать
Тип клиента описывает защиту учётных данных, PKCE — привязку кода к исходному значению. Использование PKCE не меняет место исполнения клиента.
Что проверить
- Укажите место исполнения каждого компонента.
- Определите доступ владельца устройства к коду.
- Не считайте общий встроенный секрет защищённым.
- Отделите идентификатор клиента от аутентификации.
- Проверьте PKCE для обмена кода.
- Классифицируйте серверную часть отдельно.
- Не выводите тип клиента из названия продукта.
Первоисточники
- Proof Key for Code Exchange by OAuth Public Clients
Определяет code verifier и derived code challenge для привязки authorization code к начавшему flow client instance.