Class: MsIdToken::Validator

Inherits:
Object
  • Object
show all
Defined in:
lib/ms-id-token-validator.rb,
lib/ms-id-token-validator/version.rb

Constant Summary collapse

MS_CONFIG_URI =
"https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration".freeze
CACHED_CERTS_EXPIRY =
3600
TOKEN_TYPE =
"JWT".freeze
TOKEN_ALGORITHM =
"RS256".freeze
VERSION =
"0.1.2"

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Validator

Returns a new instance of Validator.



31
32
33
# File 'lib/ms-id-token-validator.rb', line 31

def initialize(options = {})
  @cached_certs_expiry = options.fetch(:expiry, CACHED_CERTS_EXPIRY)
end

Instance Method Details

#check(id_token, audience) ⇒ Object

Raises:



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/ms-id-token-validator.rb', line 35

def check(id_token, audience)
  encoded_header, encoded_payload, signature = id_token.split(".")

  raise BadIdTokenFormat if encoded_payload.nil? || signature.nil?

  header = JSON.parse(Base64.decode64(encoded_header), symbolize_names: true)

  public_keys = JSON::JWK::Set.new(ms_public_keys)

  payload = JSON::JWT.decode(id_token, public_keys).symbolize_keys

  verify_payload(payload, audience)

  payload
end