OAuth2资源所有者密码凭据流

时间:2013-11-11 17:42:43

标签: authentication ember.js oauth-2.0 doorkeeper

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

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

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

修改1:

我之前也查看了规格,但我想确定,在我填写门卫宝石的错误报告之前,但规格中还有这一部分:

  

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

修改2

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

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

编辑3

由于在Ember-SimpleAuth中进行了大量重构,因此编辑2中显示的解决方案不再起作用。但是门卫也会改变,现在client_idclient_secret是可选的。

1 个答案:

答案 0 :(得分:11)

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

查看spec,并在资源所有者密码凭据流中看到,不需要client_id和client_secret。

Authorization Code Grant中,规范强制客户端传递* client_id和client_secret *,但在4.3.1中它表示auth-server需要客户端身份验证FOR CONFIDENTIAL CLIENTS。当客户不是“机密”时,规范就会公开。如果在上述问题的情况下(@Doorkeeper),客户端不是“机密” - 可能不需要client_id ......