Class: Logi::Commands::Token

Inherits:
Thor
  • Object
show all
Defined in:
lib/logi/commands/token.rb

Overview

JWT inspection. Signature verification fetches JWKS from the server.

Instance Method Summary collapse

Instance Method Details

#inspect(jwt) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/logi/commands/token.rb', line 10

def inspect(jwt)
  pastel = Pastel.new
  segments = jwt.split(".")
  if segments.size != 3
    abort pastel.red("Not a valid JWT (expected header.payload.signature).")
  end

  header_json  = JSON.parse(Base64.urlsafe_decode64(segments[0] + "=" * ((4 - segments[0].size % 4) % 4)))
  payload_json = JSON.parse(Base64.urlsafe_decode64(segments[1] + "=" * ((4 - segments[1].size % 4) % 4)))

  puts pastel.cyan("Header:")
  puts JSON.pretty_generate(header_json)
  puts pastel.cyan("\nPayload:")
  puts JSON.pretty_generate(payload_json)

  if options[:verify]
    verify_with_jwks(jwt, header_json, payload_json)
  end
end