Вы спросили, следует ли запрашивать секрет клиента, когда клиент пытается получить ресурс по токену доступа.
Ответ
Ответ на ваш вопрос НЕТ , поскольку токен доступа представляет сам результат авторизации и предназначен для передачи через приложение , на сервер авторизации , и сервер ресурсов , в то время какСекрет клиента должен быть секретом, известным только приложению и серверу авторизации .
Я также могу сказать, что секрет клиента эквивалентен имени пользователя ииз-за этого вы не должны предоставлять его на сервер ресурсов .
Аутентификация запроса с секретом клиента для обмена временным кодом авторизации на токен доступа уменьшаетриск того, что злоумышленник перехватит код авторизации и сам его использует.
Сам токен доступа является недолговечным токен, таким образом все сниффы HTTP-доступа осуществляются с помощью токена, срок действия которого истекает .Google использует 5-минутный срок действия их API-интерфейсов OAuth 2.
Кроме того, в потоке предоставления кода авторизации токен доступа никогда не виден пользователю, снижает риск утечки токена кому-либо еще.!
~
в глубину
Давайте посмотрим на oauth 2 осадка :
3.2.1.Аутентификация клиента
Конфиденциальные клиенты или другие клиенты, выдавшие учетные данные клиента, ДОЛЖНЫ проходить проверку подлинности на сервере авторизации, как описано в разделе 2.3, при выполнении запросов к конечной точке токена.Аутентификация клиента используется для:
Обеспечение привязки токенов обновления и кодов авторизации к клиенту, которому они были выданы.Аутентификация клиента имеет решающее значение, когда код авторизации передается в конечную точку перенаправления по небезопасному каналу или когда URI перенаправления не был зарегистрирован полностью.
Восстановление из скомпрометированного клиента путем его отключения или изменения учетных данных, что позволяет злоумышленнику не использовать украденные токены обновления.Изменение одного набора учетных данных клиента значительно быстрее, чем отзыв всего набора маркеров обновления.
- Внедрение передовых методов управления проверкой подлинности, которые требуют периодической ротации учетных данных.Ротация всего набора токенов обновления может быть сложной, в то время как ротация одного набора учетных данных клиента значительно проще.
Клиент МОЖЕТ использовать параметр запроса "client_id", чтобы идентифицировать себя при отправке запросовк конечной точке токена.
В запросе «authorization_code» «grant_type» к конечной точке токена клиент, не прошедший проверку подлинности, ДОЛЖЕН отправить свой «client_id», чтобы не допустить непреднамеренного принятия кода, предназначенного для клиента с другим »client_id ".
Это защищает клиента от подмены кода аутентификации.(Он не обеспечивает дополнительной безопасности для защищенного ресурса.)
И раздел 2.3, дополняющий предыдущий раздел:
2.3.Аутентификация клиента
Если тип клиента является конфиденциальным, клиент и сервер авторизации устанавливают метод аутентификации клиента, подходящий для требований безопасности сервера авторизации.Сервер авторизации МОЖЕТ принять любую форму аутентификации клиента, соответствующую его требованиям безопасности.
Конфиденциальным клиентам обычно выдается (или устанавливается) набор учетных данных клиента, используемых для аутентификации на сервере авторизации (например, пароль, открытый / закрытый ключ).пара).
Сервер авторизации МОЖЕТ установить метод аутентификации клиента с общедоступными клиентами.Однако сервер авторизации НЕ ДОЛЖЕН полагаться на общедоступную аутентификацию клиента для идентификации клиента.
Клиент НЕ ДОЛЖЕН использовать более одного метода аутентификации в каждом запросе.
Инаконец, раздел 1.4, касающийся токенов доступа:
1.4.Токен доступа
Токены доступа - это учетные данные, используемые для доступа к защищенным ресурсам.Маркер доступа - это строка, представляющая авторизацию, выданную клиенту.Строка обычно непрозрачна для клиента.Токены представляют собой конкретные области действия и длительности доступа, предоставляемые владельцем ресурса и применяемые сервером ресурсов и сервером авторизации.
Токен может обозначать идентификатор, используемый для получения информации об авторизации, или самостоятельно содержать авторизациюинформация проверяемым образом (то есть строка токена, состоящая из некоторых данных и подписи).Дополнительные учетные данные аутентификации, которые выходят за рамки данной спецификации, могут потребоваться для того, чтобы клиент использовал токен.
Маркер доступа обеспечивает уровень абстракции, заменяя различные конструкции авторизации (например, имя пользователя и пароль)с одним токеном, понятным для сервера ресурсов.Эта абстракция позволяет выдавать маркеры доступа более ограниченно, чем разрешение, используемое для их получения, а также устраняет необходимость сервера ресурсов понимать широкий спектр методов аутентификации.
Токены доступа могут иметь различные форматы, структуры иметоды использования (например, криптографические свойства), основанные на требованиях безопасности сервера ресурсов.Атрибуты токена доступа и методы, используемые для доступа к защищенным ресурсам, выходят за рамки данной спецификации и определяются сопутствующими спецификациями.