2015-05-27 26 views
3

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

此方法由IETF RFC 6749推荐,并且需要雅虎和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") \ 
) 

我见过的密码策略示例不显式包括标题,所以我想知道它是如何完成的。

回答

3

看文档的auth_code战略和the codeoauth2/strategy/password.rboauth2/strategy/base.rboauth2/client.rb后,它出现在了OAuth2创业板将在client_idclient_secret形式参数添加到身体,但没有头。这是允许的,但NOT RECOMMENDEDIETF RFC 6749。要添加IETF推荐的Authorization标题,看起来您需要将其添加为参数,如上所示。

更多信息:Pull request #192涵盖此,但可能由于向后兼容性问题而停滞。