Class: PadlockAuth::Jwt::Strategy

Inherits:
AbstractStrategy
  • Object
show all
Extended by:
Config::Option
Includes:
Mixins::BuildWith
Defined in:
lib/padlock_auth/jwt/strategy.rb

Defined Under Namespace

Classes: Builder

Constant Summary collapse

REQUIRED_HEADER_TYPES =
["at+jwt", "application/at+jwt"]

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#require_expObject (readonly)

Boolean



67
# File 'lib/padlock_auth/jwt/strategy.rb', line 67

option :require_exp, default: true

#require_issObject (readonly)

Boolean



101
# File 'lib/padlock_auth/jwt/strategy.rb', line 101

option :require_iss, default: false

Instance Method Details

#aud_required?Boolean



129
130
131
# File 'lib/padlock_auth/jwt/strategy.rb', line 129

def aud_required?
  !!require_aud
end

#build_access_token(raw_token) ⇒ Object

Token Factory



18
19
20
# File 'lib/padlock_auth/jwt/strategy.rb', line 18

def build_access_token(raw_token)
  Jwt::AccessToken.new(raw_token, self)
end

#build_forbidden_token_response(access_token, scopes) ⇒ Object



28
29
30
# File 'lib/padlock_auth/jwt/strategy.rb', line 28

def build_forbidden_token_response(access_token, scopes)
  Jwt::Http::ForbiddenTokenResponse.from_access_token(access_token, scopes)
end

#build_invalid_token_response(access_token) ⇒ Object

HTTP Responses



24
25
26
# File 'lib/padlock_auth/jwt/strategy.rb', line 24

def build_invalid_token_response(access_token)
  Jwt::Http::InvalidTokenResponse.from_access_token(access_token)
end

#exp_required?Boolean



69
70
71
# File 'lib/padlock_auth/jwt/strategy.rb', line 69

def exp_required?
  !!require_exp
end

#header_typesObject



51
52
53
# File 'lib/padlock_auth/jwt/strategy.rb', line 51

def header_types
  Array.wrap(@header_types || REQUIRED_HEADER_TYPES)
end

#iat_required?Boolean



161
162
163
# File 'lib/padlock_auth/jwt/strategy.rb', line 161

def iat_required?
  !!require_iat
end

#iss_required?Boolean



103
104
105
# File 'lib/padlock_auth/jwt/strategy.rb', line 103

def iss_required?
  !!require_iss
end

#issuersObject



109
110
111
# File 'lib/padlock_auth/jwt/strategy.rb', line 109

def issuers
  Array.wrap(@issuers)
end

#jti_required?Boolean



146
147
148
# File 'lib/padlock_auth/jwt/strategy.rb', line 146

def jti_required?
  !!require_jti
end

#nbf_required?Boolean



87
88
89
# File 'lib/padlock_auth/jwt/strategy.rb', line 87

def nbf_required?
  !!require_nbf
end

#sub_required?Boolean



177
178
179
# File 'lib/padlock_auth/jwt/strategy.rb', line 177

def sub_required?
  !!require_sub
end

#subjectObject



183
184
185
# File 'lib/padlock_auth/jwt/strategy.rb', line 183

def subject
  Array.wrap(@subject)
end

#validate!Object

Builder Validation

Raises:

  • (ArgumentError)


189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
# File 'lib/padlock_auth/jwt/strategy.rb', line 189

def validate!
  raise ArgumentError, "secret_key is required" unless secret_key.present?

  raise ArgumentError, "algorithm is required" unless algorithm.present?

  raise ArgumentError, "header_types cannot be empty" unless header_types.present?

  if subject.present? && !sub_required?
    raise ArgumentError, "subject is not required"
  end

  if iss_required? && issuers.blank?
    raise ArgumentError, "issuers are required when require_iss is true"
  end

  true
end