OAuth2 INTRIDEA gem和HTTP基本身份验证标头

时间:2015-05-27 08:33:58

标签: ruby oauth-2.0 yahoo-api ringcentral

使用INTRIDEA的OAuth2 Ruby gem,是否建议使用密码策略添加HTTP基本身份验证标头?

此方法由IETF RFC 6749推荐,并且是Yahoo和RingCentral OAuth 2.0实施所要求的。

我正在使用的标题是以下格式:

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

以下不起作用,似乎没有添加授权标题:

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") \
)

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

1 个答案:

答案 0 :(得分:3)

查看auth_code策略的文档和oauth2/strategy/password.rb oauth2/strategy/base.rboauth2/client.rbclient_id的{​​{3}}后,看来OAuth2 gem会添加{ {1}}和client_secret形成了正文的参数,但没有形成标题。这是允许的,NOT RECOMMENDED the code。要添加IETF建议的Authorization标题,您似乎需要将其添加为参数,如上所示。

更多信息:IETF RFC 6749涵盖了这一点,但由于向后兼容性问题,可能会停滞不前。