【发布时间】:2013-11-23 14:53:38
【问题描述】:
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:
我之前也看过规范,但我想确定,在我为 Doorkeeper gem 填写错误报告之前,规范中也有这一部分:
如果客户端类型是机密的或客户端已获得客户端凭据(或分配了其他身份验证要求),则客户端必须按照第 3.2.1 节中的说明向授权服务器进行身份验证。
编辑 2
在查看 ember-simple-auth 的测试时,我看到它还测试了请求参数 client_id 和 client_secret。因此,我深入研究了代码,发现了如何设置 id 和 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 是可选的。
【问题讨论】:
-
在 LoginController 中简单地添加 client_id 和 client_secret 并不适合我。你在其他地方还有什么其他事情可以完成这项工作吗?
-
我对我的问题进行了编辑。我研究了新的 Ember-SimpleAuth 实现,但我不知道该怎么做。如果你真的需要client_id和client_secret,请在SO这里提出问题,Ember-SimpleAuth的开发者也在SO这里,会回答的。
标签: authentication ember.js oauth-2.0 doorkeeper