class OmniAuth::Strategies::JWT

Attributes

decoded[R]

Public Instance Methods

callback_phase() click to toggle source
Calls superclass method
# File lib/omniauth/strategies/jwt.rb, line 38
def callback_phase
  return fail!(:missing_credentials) if missing_credentials?

  if params['token'] && !params['token'].empty?
    parse_token(params['token'])
    super
  else
    req = JSON.generate({
      username: params['username'],
      password: params['password'],
      appToken: options.app_token
    })

    response = VivantApi.post(path: options.auth_url, body: req, headers: {
      'content-type' => 'application/json',
      'Authorization' => "Bearer #{options.app_token}"
    }).value

    if response.status == 200
      response = JSON.parse(response.body)
      parse_token(response['userToken'])
      puts "\n\ntoken: #{response['userToken']}\n\n"
      super
    else
      fail! :invalid_credentials
    end
  end
rescue ClaimInvalid => e
  fail! :claim_invalid, e
end
request_phase() click to toggle source
# File lib/omniauth/strategies/jwt.rb, line 28
def request_phase
  f = OmniAuth::Form.new(:title => (options[:title] || "LDAP Authentication"), :url => callback_path)
  f.text_field 'Login', 'username'
  f.password_field 'Password', 'password'
  f.button "Sign In"
  f.to_response
end

Private Instance Methods

missing_credentials?() click to toggle source
# File lib/omniauth/strategies/jwt.rb, line 121
def missing_credentials?
  (params['username'].nil? || params['username'].empty? || params['password'].nil? || params['password'].empty?) && (params['token'].nil? || params['token'].empty?)
end
params() click to toggle source
# File lib/omniauth/strategies/jwt.rb, line 117
def params
  request.params
end
parse_token(data) click to toggle source
# File lib/omniauth/strategies/jwt.rb, line 98
def parse_token(data)
  @decoded, _ = ::JWT.decode(data, secret, options.algorithm)
  @decoded = @decoded['userInfo']

  (options.required_claims || []).each do |field|
    raise ClaimInvalid.new("Missing required '#{field}' claim.") if !@decoded.key?(field.to_s)
  end
  raise ClaimInvalid.new("Missing required 'iat' claim.") if options.valid_within && !@decoded["iat"]
  raise ClaimInvalid.new("'iat' timestamp claim is too skewed from present.") if options.valid_within && (Time.now.to_i - @decoded["iat"]).abs > options.valid_within
end
secret() click to toggle source
# File lib/omniauth/strategies/jwt.rb, line 90
def secret
  if options.secret.is_a?(String)
    options.secret
  else
    secret_lookup.secret
  end
end
secret_lookup() click to toggle source
# File lib/omniauth/strategies/jwt.rb, line 109
def secret_lookup
  @secret_lookup ||= options.secret.new(request)
end
uid_lookup() click to toggle source
# File lib/omniauth/strategies/jwt.rb, line 113
def uid_lookup
  @uid_lookup ||= options.uid_claim.new(request)
end