Class: LobbyBoy::OpenIDConnect::IdToken

Inherits:
SimpleDelegator
  • Object
show all
Defined in:
lib/lobby_boy/openid_connect/id_token.rb

Overview

Wraps a OpenIDConnect::ResponseObject::IdToken providing some useful methods for it.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(jwt_token, public_key = nil) ⇒ IdToken

Creates a new IdToken by decoding the given JWT token using the given public key.

Parameters:

  • jwt_token (String)

    The JWT token received from the OpenID Connect provider.

  • public_key (String) (defaults to: nil)

    Public key or secret. Only required for signed tokens.



14
15
16
17
18
# File 'lib/lobby_boy/openid_connect/id_token.rb', line 14

def initialize(jwt_token, public_key = nil)
  @jwt_token = jwt_token
  id_token = ::OpenIDConnect::ResponseObject::IdToken.decode jwt_token, public_key
  super id_token
end

Instance Attribute Details

#jwt_tokenObject

Returns the value of attribute jwt_token.



7
8
9
# File 'lib/lobby_boy/openid_connect/id_token.rb', line 7

def jwt_token
  @jwt_token
end

Instance Method Details

#datetime_from_seconds(seconds) ⇒ Object



34
35
36
# File 'lib/lobby_boy/openid_connect/id_token.rb', line 34

def datetime_from_seconds(seconds)
  DateTime.strptime seconds.to_s, '%s'
end

#expires_atObject



20
21
22
# File 'lib/lobby_boy/openid_connect/id_token.rb', line 20

def expires_at
  datetime_from_seconds __getobj__.exp
end

#expires_inObject

Number of seconds left until this ID token expires.



30
31
32
# File 'lib/lobby_boy/openid_connect/id_token.rb', line 30

def expires_in
  [0, __getobj__.exp - Time.now.to_i].max
end

#issued_atObject



24
25
26
# File 'lib/lobby_boy/openid_connect/id_token.rb', line 24

def issued_at
  datetime_from_seconds __getobj__.iat
end