【问题标题】:OAuth2 Resource Owner Password Credentials flowOAuth2 资源所有者密码凭证流程
【发布时间】: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


【解决方案1】:

您确定两者都使用资源所有者密码凭证流程实施 oAuth?

查看spec,发现在资源所有者密码凭证流程中,不需要client_id 和client_secret。

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

【讨论】:

  • 我添加了两个库的功能列表以及我没有清楚理解的部分规范。
  • 看一下规格,看看需要客户端ID和密码! 4.3节,看图B和C的描述,明确说明“客户端向授权服务器认证”和“授权服务器对客户端进行认证”。
  • @ZólyomiIstván,该规范有多个版本。所以让我们确保我们在同一页上 - 你的 4.3 部分的标题是什么?我指的是“资源所有者密码凭据授予”。在那里,您不需要 client_id 和 client_secret(与 4.1 授权代码授予不同,其中明确说明您需要这些参数)。
  • 虽然草稿很多,但规范应该只有一个版本,我指的是tools.ietf.org/html/rfc6749#section-4.3。引用规范 4.3.2:“授权服务器必须:要求对机密客户端或任何已颁发客户端凭据的客户端进行客户端身份验证”。原来的问题是要不要包含client id和secret,所以肯定是有id的,所以需要认证。 4.1 仅在未完成客户端身份验证(例如标头)时才需要显式 client_id 参数。
  • 感谢大家的帮助。我发现,ember-simple-auth 还支持发送client_id 和client_secret 以及登录请求。有关解决方案,请参阅上面我的问题中的 edit2。
猜你喜欢
  • 2014-09-02
  • 2019-01-03
  • 2018-05-25
  • 2015-05-30
  • 2015-01-06
  • 2014-08-05
  • 1970-01-01
  • 2014-03-31
  • 2015-08-16
相关资源
最近更新 更多