Поток учетных данных владельца ресурса 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) клиент не является "конфиденциальным" - клиент_ид может не понадобиться...