2015-05-27 7 views
3

Используя INTRIDEA OAuth2 Ruby gem, есть ли рекомендуемый способ добавления базового заголовка HTTP HTTP с использованием стратегии пароля?OAuth2 INTRIDEA 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") \ 
) 

Примеры стратегии доступа, которые я видел, не указаны явно y включить заголовок, поэтому мне интересно, как это делается.

ответ

3

После глядя на документы для стратегии auth_code и the code для oauth2/strategy/password.rb, oauth2/strategy/base.rb и oauth2/client.rb, оказывается жемчужина OAuth2 добавит параметры формы client_id и client_secret к телу, но не в заголовке. Это разрешено, но NOT RECOMMENDED - IETF RFC 6749. Чтобы добавить заголовок IETF, рекомендуемый Authorization, похоже, вам нужно добавить его как параметр, как показано выше.

Дополнительная информация: Pull request #192 охватывает это, но может застопориваться из-за проблем с обратной совместимостью.