Module: GoldenTicket
- Defined in:
- lib/golden_ticket.rb,
lib/golden_ticket/version.rb
Overview
GoldenTicket Module
Constant Summary collapse
- VERSION =
'0.9.2'
Class Method Summary collapse
-
.decode(key, token) ⇒ Object
Decode (Parse JWT).
-
.encode(key, payload) ⇒ Object
Encode (Generate JWT).
Class Method Details
.decode(key, token) ⇒ Object
Decode (Parse JWT)
31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/golden_ticket.rb', line 31 def self.decode key, token # Split Token header_data, payload_data, secret_data = token.split '.' # Verify Token secret = "#{header_data}.#{payload_data}" raise 'Invalid Token' unless secret_data == OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'), key, secret) # Pull dat Payload JSON.parse Base64.urlsafe_decode64(payload_data) end |
.encode(key, payload) ⇒ Object
Encode (Generate JWT)
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/golden_ticket.rb', line 13 def self.encode key, payload # Prep Header - Always HMAC SHA 256 / JWT header = { alg: 'HS256', typ: 'JWT' } header_data = Base64.urlsafe_encode64 header.to_json # Prepare Payload payload_data = Base64.urlsafe_encode64 payload.to_json # Compute Token Secret secret = "#{header_data}.#{payload_data}" secret_data = OpenSSL::HMAC.hexdigest OpenSSL::Digest.new('sha256'), key, secret # Generate Token "#{header_data}.#{payload_data}.#{secret_data}" end |