Class: PadlockAuth::Jwt::Strategy
- Inherits:
-
AbstractStrategy
- Object
- AbstractStrategy
- PadlockAuth::Jwt::Strategy
- 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
-
#require_exp ⇒ Object
readonly
Boolean.
-
#require_iss ⇒ Object
readonly
Boolean.
Instance Method Summary collapse
- #aud_required? ⇒ Boolean
-
#build_access_token(raw_token) ⇒ Object
Token Factory.
- #build_forbidden_token_response(access_token, scopes) ⇒ Object
-
#build_invalid_token_response(access_token) ⇒ Object
HTTP Responses.
- #exp_required? ⇒ Boolean
- #header_types ⇒ Object
- #iat_required? ⇒ Boolean
- #iss_required? ⇒ Boolean
- #issuers ⇒ Object
- #jti_required? ⇒ Boolean
- #nbf_required? ⇒ Boolean
- #sub_required? ⇒ Boolean
- #subject ⇒ Object
-
#validate! ⇒ Object
Builder Validation.
Instance Attribute Details
#require_exp ⇒ Object (readonly)
Boolean
67 |
# File 'lib/padlock_auth/jwt/strategy.rb', line 67 option :require_exp, default: true |
#require_iss ⇒ Object (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_types ⇒ Object
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 |
#issuers ⇒ Object
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 |
#subject ⇒ Object
183 184 185 |
# File 'lib/padlock_auth/jwt/strategy.rb', line 183 def subject Array.wrap(@subject) end |
#validate! ⇒ Object
Builder Validation
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 |