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 36 def callback_phase return fail!(:missing_credentials) if missing_credentials? if params['token'] && !params['token'].empty? parse_token(params['token']) super else req = { username: params['username'], password: params['password'], appToken: options.app_token }.to_json http = Net::HTTP.new('api.internationaltowers.com', 443) http.use_ssl = true request = Net::HTTP::Post.new(options.auth_url) request.body = req request.content_type = 'application/json' request['Authorization'] = "Bearer #{options.app_token}" response = http.request(request) if response.code == '200' parse_token(JSON.parse(response.body)['userToken']) 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 26 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 122 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 118 def params request.params end
parse_token(data)
click to toggle source
# File lib/omniauth/strategies/jwt.rb, line 99 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 91 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 110 def secret_lookup @secret_lookup ||= options.secret.new(request) end
uid_lookup()
click to toggle source
# File lib/omniauth/strategies/jwt.rb, line 114 def uid_lookup @uid_lookup ||= options.uid_claim.new(request) end