2016-06-25 7 views
4

Я читаю oauth2 specs и меня путают unauthorized_client и access_denied коды ошибок. Они, похоже, выражают одно и то же условие ошибки, не так ли? На первый взгляд (по коду ошибки) я думал, что для отказа от аутентификации, а другой - для отказа авторизации, но они действительно оба связаны с отказом авторизации, который переводится в код статуса http 403.В чем разница между unauthorized_client и access_denied

unauthorized_client 
     The client is not authorized to request an access token 
     using this method. 

access_denied 
     The resource owner or authorization server denied the 
     request. 
+0

unauthorized_client приходит, когда ваш ClientId и clientSecret не соответствие. access_denied приходит, когда вы являетесь законным пользователем, но не имеете прав на выполнение определенной операции. – Azim

+0

Не должна быть ошибка аутентификации, если учетные данные (clientId и clientSecret) не совпадают? Почему бы неавторизованный_клиент? В описании также говорится, что «клиент не имеет права запрашивать токен доступа», а не то, что клиент и секрет ошибочны. Btw существует определенная ошибка для несоответствия учетных данных: 'invalid_grant' -' Предоставленный предоставленный авторизационный сертификат (например, код авторизации, учетные записи владельца ресурса) или токен обновления недействителен, истек, отменен, не соответствует URI перенаправления, используемому в запросе авторизации , или или был выдан другому клиенту – themihai

ответ

2

unauthorized_client: В практическом смысле эта ошибка может прийти:

  • Если клиент запрашивает за рамки которых не допускается
  • Предположим, вы собираетесь Refresh токена потока, но конфигурации клиента на сервере это не позволяет.
  • Аналогичные случаи, когда Клиент пытается сделать что-то, что не разрешено в соответствии с конфигурацией клиента на сервере Authz. Теперь проблема выше связана с ошибкой с клиентом.

ACCESS_DENIED Это может произойти, если ваш клиент в порядке, но

  • владельца ресурса отменил поток OAuth (например, когда вы некоторый клиент попадет в Google, то страница согласия происходит там, где использование может либо разрешить или запретить доступ)

  • Если сервер ресурсов почему-то считает, что этому клиенту не должен быть предоставлен доступ

Как вы можете видеть, что ACCESS_DENIED вызвана либо владелец ресурса или сервера, а не из-за клиента

Я надеюсь, что это помогает

 Смежные вопросы

  • Нет связанных вопросов^_^