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