«Получить 3-сторонний токен с предоставлением кода авторизации» не является жалобой OAuth 2.0 RFC и выдает ошибку 400 - PullRequest
0 голосов
/ 05 ноября 2019

Я реализовал приложение, способное получать токен доступа OAuth через процесс авторизации, используя код типа авторизации большой тип. Я успешно использовал его со службами API Google, но у меня возникла проблема, когда я использую его со службами API AutoDesk Forge. У меня есть подозрение, что OAuth AutoDesk плохо подтверждает спецификацию OAuth 2.0.

Мое приложение выдает этот HTTP-запрос POST формы:

POST /authentication/v1/gettoken HTTP/1.1
Host: developer.api.autodesk.com
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code&code=SplxlOBeZQQYbYS6WxSbIA
&redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb

Здесь я отправляю client_id и client_secret в качестве имени пользователя и пароля для базовой HTTP-авторизации. Но я получаю сообщение об ошибке:

{"developerMessage":"The required parameter(s) client_id,client_secret not present in the request","userMessage":"","errorCode":"AUTH-008","more info":"http://developer.api.autodesk.com/documentation/v1/errors/AUTH-008"}

Однако в главе 2.3.1 спецификация OAuth говорится (https://tools.ietf.org/html/rfc6749#section-2.3.1):

The authorization server MUST support the HTTP Basic
authentication scheme for authenticating clients that were issued a
client password.

. Пример такого запроса, который сервер ДОЛЖЕН поддерживать вглава 4.2.3 (https://tools.ietf.org/html/rfc6749#section-4.1.3):

 POST /token HTTP/1.1
 Host: server.example.com
 Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
 Content-Type: application/x-www-form-urlencoded

 grant_type=authorization_code&code=SplxlOBeZQQYbYS6WxSbIA
 &redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb

И AutoDesk хочет это по-другому в соответствии с документацией:

  curl -v 'https://developer.api.autodesk.com/authentication/v1/gettoken'
  -X 'POST'
  -H 'Content-Type: application/x-www-form-urlencoded'
  -d '
    client_id=obQDn8P0GanGFQha4ngKKVWcxwyvFAGE&
    client_secret=eUruM8HRyc7BAQ1e&
    grant_type=authorization_code&
    code=wroM1vFA4E-Aj241-quh_LVjm7UldawnNgYEHQ8I&
    redirect_uri=http://sampleapp.com/oauth/callback
  '

(Здесь, как вы можете видеть, AutoDesk ожидает, что client_id и client_secretбыть в теле запроса POST.) Это дополнительный способ, которым сервер МОЖЕТ поддерживать, как написано снова в главе 2.3.1 (https://tools.ietf.org/html/rfc6749#section-2.3.1):

Alternatively, the authorization server MAY support including the
client credentials in the request-body

Итак, я прав, что служба AutoDesk Forge API поддерживает только дополнительныекстати и видимо не поддерживает обязательный путь?

1 Ответ

1 голос
/ 06 ноября 2019

Итак, я прав, что служба AutoDesk Forge API поддерживает только необязательный способ и, очевидно, не поддерживает обязательный способ?

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

...