OAuth2资源所有者密码凭据流是否仅需要以下信息进行身份验证:
grant_type: password
username: test@test.de
password: test
还是需要client_id
和client_secret
吗?我问,因为我想将Ember-Simple-Auth与Doorkeeper一起使用。两者都实现了流程,但Ember-Simple-Auth没有使用client_id
和client_secret
,而Doorkeeper需要这些信息才能工作。所以我认为其中一个没有正确实现OAuth2规范。
修改1:
我之前也查看了规格,但我想确定,在我填写门卫宝石的错误报告之前,但规格中还有这一部分:
如果客户端类型是机密或客户端已获得客户端凭据(或分配了其他身份验证要求),则客户端必须按照第3.2.1节中的说明使用授权服务器进行身份验证。
修改2
在查看ember-simple-auth的测试时,我发现它还测试了请求参数client_id
和client_secret
。因此,我深入研究了代码,并了解了如何设置id和秘密。
App.LoginController = Ember.Controller.extend(Ember.SimpleAuth.LoginControllerMixin, {
client_id: 'id',
client_secret: 'secret'
})
编辑3
由于在Ember-SimpleAuth中进行了大量重构,因此编辑2中显示的解决方案不再起作用。但是门卫也会改变,现在client_id
和client_secret
是可选的。
答案 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 ......