Поток учетных данных владельца ресурса OAuth2

Для проверки подлинности учетной записи владельца ресурса OAuth2 требуется только следующая информация для проверки подлинности:

 grant_type: password
 username: [email protected]
 password: test

Или нужно также client_id и client_secret? Я спрашиваю, потому что я хочу использовать Ember-Simple-Auth вместе с Doorkeeper. Оба реализуют поток, но Ember-Simple-Auth не использовал client_id и client_secret, тогда как Doorkeeper нуждается в этой информации для работы. Поэтому я думаю, что один из них не реализует спецификации OAuth2 правильно.

Изменить 1:

Я также изучал спецификации раньше, но я хочу быть уверенным, прежде чем заполнить отчет об ошибке для драгоценного камня Doorkeeper, но есть и этот раздел в спецификациях:

Если тип клиента является конфиденциальным или клиенту были выданы учетные данные клиента (или назначены другие требования проверки подлинности), клиент ДОЛЖЕН пройти аутентификацию с сервера авторизации, как описано в разделе 3.2.1.

Изменить 2

Изучая тесты ember-simple-auth, я увидел, что он также тестирует параметры запроса client_id и client_secret. Поэтому я смотрел глубже в код и выяснял, как настроить идентификатор и секрет.

App.LoginController = Ember.Controller.extend(Ember.SimpleAuth.LoginControllerMixin, {
    client_id: 'id',
    client_secret: 'secret'
})

Изменить 3

Поскольку большой рефакторинг в Ember-SimpleAuth, решение, показанное в Edit 2, больше не работает. Но Doorkeeper также изменяется, и теперь client_id и client_secret являются необязательными.

Ответы

Ответ 1

Вы уверены, что оба реализуют oAuth с помощью потока полномочий владельца ресурса?

Взгляните на спецификацию и посмотрите, что в потоке учетных данных пароля владельца ресурса client_id и client_secret не нужны.

В Разрешении кода авторизации спецификация ЗАПИСАЕТ клиенту передать * client_id и client_secret *, но в 4.3.1 говорится, что auth-server требует аутентификации клиента для КОНФИДЕНЦИАЛЬНЫХ КЛИЕНТОВ. Спецификация оставляет ее открытой для случаев, когда клиент не является "конфиденциальным". Если в случае вопроса выше (@Doorkeeper) клиент не является "конфиденциальным" - клиент_ид может не понадобиться...