OAuth2资源所有者密码凭据流

kun*_*erd 15 authentication oauth-2.0 ember.js doorkeeper

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

 grant_type: password
 username: test@test.de
 password: test
Run Code Online (Sandbox Code Playgroud)

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

编辑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'
})
Run Code Online (Sandbox Code Playgroud)

编辑3

自从Ember-SimpleAuth进行了大量重构以来,编辑2中显示的解决方案不再适用.但是门卫也会改变现在client_id并且client_secret是可选的.

Oha*_*adR 11

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

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

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

  • 感谢大家的帮助.我发现,ember-simple-auth还支持发送`client_id`和`client_secret`以及登录请求.有关解决方案,请参阅上面的问题中的edit2. (2认同)