3

使用 INTRIDEA 的 OAuth2 Ruby gem,是否有推荐的方法来使用密码策略添加 HTTP 基本身份验证标头?

此方法由IETF RFC 6749推荐,并为 Yahoo 和 RingCentral OAuth 2.0 实现所要求。

我正在使用的所需标头具有以下格式:

Authorization: Basic <base 64 encoded "CLIENT_ID:CLIENT_SECRET">

以下不起作用,似乎没有添加 Authorization 标头:

client = OAuth2::Client.new('CLIENT_ID', 'CLIENT_SECRET', :site => 'https://example.com)
token  = client.password.get_token('USERNAME', 'PASSWORD')

以下工作,但很冗长:

client = OAuth2::Client.new('CLIENT_ID', 'CLIENT_SECRET', :site => 'https://example.com)
token  = client.password.get_token('USERNAME', 'PASSWORD', \
  :headers => { 'Authorization' => 'Basic ' + Base64.strict_encode64("CLIENT_ID:CLIENT_SECRET") \
)

我见过的密码策略示例没有明确包含标题,所以我想知道它是如何完成的。

4

1 回答 1

3

在查看了auth_code策略的文档和,的代码oauth2/strategy/password.rb之后,OAuth2 gem 似乎会将and表单参数添加到正文而不是标题。这是允许的,但IETF RFC 6749允许。要添加 IETF 推荐的标头,您似乎需要将其添加为参数,如上所示。oauth2/strategy/base.rboauth2/client.rbclient_idclient_secretNOT RECOMMENDEDAuthorization

更多信息:拉取请求 #192涵盖了这一点,但可能由于向后兼容性问题而停止。

于 2015-05-27T10:07:26.583 回答