16

OAuth2 资源所有者密码凭证流程是否只需要以下信息进行身份验证:

 grant_type: password
 username: test@test.de
 password: test

还是它也需要client_idand client_secret?我问,因为我想将Ember-Simple-AuthDoorkeeper一起使用。两者都实现了流程,但 Ember-Simple-Auth 没有使用client_idand client_secret,而 Doorkeeper 需要该信息才能工作。所以我认为其中之一没有正确实现 OAuth2 规范。

编辑1:

我之前也看过规范,但我想确定,在我为 Doorkeeper gem 填写错误报告之前,规范中也有这一部分:

如果客户端类型是机密的或客户端已获得客户端凭据(或分配了其他身份验证要求),则客户端必须向授权服务器进行身份验证,如第 3.2.1 节所述。

编辑 2

在查看 ember-simple-auth 的测试时,我看到它还测试请求参数client_idclient_secret. 因此,我更深入地研究了代码,并了解了如何设置 id 和 secret。

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

编辑 3

由于在 Ember-SimpleAuth 中进行了重大重构,Edit 2 中显示的解决方案不再起作用。但是门卫也发生了变化,现在client_idclient_secret可选的。

4

1 回答 1

12

您确定两者都使用资源所有者密码凭据流实现 oAuth 吗?

查看规范,并看到在资源所有者密码凭证流程中,不需要 client_id 和 client_secret。

Authorization Code Grant中,规范强制客户端传递client_id 和 client_secret,但在 4.3.1 中它说 auth-server 需要对机密客户端进行客户端身份验证。当客户不是“机密”时,该规范对其开放。如果在上述问题的情况下(@Doorkeeper),客户端不是“机密” - 可能不需要 client_id ...

于 2013-11-11T20:46:23.157 回答