Class: PadlockAuth::Jwt::AccessToken

Inherits:
AbstractAccessToken
  • Object
show all
Defined in:
lib/padlock_auth/jwt/access_token.rb

Instance Method Summary collapse

Constructor Details

#initialize(jwt, strategy) ⇒ AccessToken

Returns a new instance of AccessToken.



6
7
8
9
10
# File 'lib/padlock_auth/jwt/access_token.rb', line 6

def initialize(jwt, strategy)
  @jwt = jwt
  @encoded_token = JWT::EncodedToken.new(jwt)
  @strategy = strategy
end

Instance Method Details

#accessible?Boolean

Returns:

  • (Boolean)


12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/padlock_auth/jwt/access_token.rb', line 12

def accessible?
  return false unless valid_jwt_token?

  return false unless includes_required_claims?

  # "exp" (Expiration Time) Claim
  return false unless valid_exp_claim?

  # "nbf" (Not Before) Claim
  return false unless valid_nbf_claim?

  # "iss" (Issuer) Claim
  return false unless valid_iss_claim?

  # "jti" (JWT ID) Claim
  return false unless valid_jti_claim?

  # "sub" (Subject) Claim
  return false unless valid_sub_claim?

  true
end

#forbidden_token_reasonObject



67
68
69
70
71
# File 'lib/padlock_auth/jwt/access_token.rb', line 67

def forbidden_token_reason
  return :invalid_jwt_token unless valid_jwt_token?

  :invalid_aud_claim
end

#headerObject



73
74
75
# File 'lib/padlock_auth/jwt/access_token.rb', line 73

def header
  @encoded_token.header if valid_jwt_token?
end

#includes_scope?(required_scopes) ⇒ Boolean

Returns:

  • (Boolean)


61
62
63
64
65
# File 'lib/padlock_auth/jwt/access_token.rb', line 61

def includes_scope?(required_scopes)
  return false unless valid_jwt_token?

  required_scopes.none? || valid_aud_claim?(required_scopes.map(&:to_s))
end

#invalid_token_reasonObject



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/padlock_auth/jwt/access_token.rb', line 35

def invalid_token_reason
  return valid_header? ? :invalid_signature : :invalid_jwt_token unless valid_jwt_token?

  return :missing_exp_claim unless includes_required_exp_claim?
  return :invalid_exp_claim unless valid_exp_claim?

  return :missing_nbf_claim unless includes_required_nbf_claim?
  return :invalid_nbf_claim unless valid_nbf_claim?

  return :missing_iss_claim unless includes_required_iss_claim?
  return :invalid_iss_claim unless valid_iss_claim?

  return :missing_aud_claim unless includes_required_aud_claim?
  # validity checked by #includes_scope?

  return :missing_jti_claim unless includes_required_jti_claim?
  return :invalid_jti_claim unless valid_jti_claim?

  return :missing_iat_claim unless includes_required_iat_claim?

  return :missing_sub_claim unless includes_required_sub_claim?
  return :invalid_sub_claim unless valid_sub_claim?

  super # :unknown
end

#payloadObject



77
78
79
# File 'lib/padlock_auth/jwt/access_token.rb', line 77

def payload
  @encoded_token.payload if valid_jwt_token?
end