class OAuth2::Authenticator

Attributes

id[R]
mode[R]
secret[R]

Public Class Methods

encode_basic_auth(user, password) click to toggle source
# File lib/oauth2/authenticator.rb, line 33
def self.encode_basic_auth(user, password)
  'Basic ' + Base64.encode64(user + ':' + password).delete("\n")
end
new(id, secret, mode) click to toggle source
# File lib/oauth2/authenticator.rb, line 7
def initialize(id, secret, mode)
  @id = id
  @secret = secret
  @mode = mode
end

Public Instance Methods

apply(params) click to toggle source

Apply the request credentials used to authenticate to the Authorization Server

Depending on configuration, this might be as request params or as an Authorization header.

User-provided params and header take precedence.

@param [Hash] params a Hash of params for the token endpoint @return [Hash] params amended with appropriate authentication details

# File lib/oauth2/authenticator.rb, line 22
def apply(params)
  case mode.to_sym
  when :basic_auth
    apply_basic_auth(params)
  when :request_body
    apply_params_auth(params)
  else
    raise NotImplementedError
  end
end

Private Instance Methods

apply_basic_auth(params) click to toggle source

Adds an `Authorization` header with Basic Auth credentials if and only if it is not already set in the params.

# File lib/oauth2/authenticator.rb, line 47
def apply_basic_auth(params)
  headers = params.fetch(:headers, {})
  headers = basic_auth_header.merge(headers)
  params.merge(:headers => headers)
end
apply_params_auth(params) click to toggle source

Adds client_id and client_secret request parameters if they are not already set.

# File lib/oauth2/authenticator.rb, line 41
def apply_params_auth(params)
  {'client_id' => id, 'client_secret' => secret}.merge(params)
end
basic_auth_header() click to toggle source

@see tools.ietf.org/html/rfc2617#section-2

# File lib/oauth2/authenticator.rb, line 54
def basic_auth_header
  {'Authorization' => self.class.encode_basic_auth(id, secret)}
end