Class: Usps::JwtAuth::Decode

Inherits:
Object
  • Object
show all
Defined in:
lib/usps/jwt_auth/decode.rb

Overview

Decode and validate data from a JWT

Constant Summary collapse

CONFIG =
{
  required_claims: %w[iss exp],
  verify_iss: true,
  verify_aud: true,
  algorithm: JwtAuth.configuration.jwt.algorithm
}.freeze

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.decode(token, audience: [], issuer: nil) ⇒ Object



15
16
17
# File 'lib/usps/jwt_auth/decode.rb', line 15

def self.decode(token, audience: [], issuer: nil)
  new.decode(token, audience: audience, issuer: issuer)
end

.issuer_pattern(issuer) ⇒ Object



19
20
21
# File 'lib/usps/jwt_auth/decode.rb', line 19

def self.issuer_pattern(issuer)
  /\A#{JwtAuth.configuration.jwt.issuer_base}(?:\z|:#{issuer})/
end

Instance Method Details

#decode(token, audience: [], issuer: nil) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/usps/jwt_auth/decode.rb', line 23

def decode(token, audience: [], issuer: nil)
  result = JWT.decode(
    token,
    public_key(token),
    true,
    CONFIG.merge(
      aud: audience,
      iss: self.class.issuer_pattern(issuer)
    )
  )
  result[0]['data']
end