Class: StandardId::Provider::IdTokenService

Inherits:
Object
  • Object
show all
Defined in:
lib/standard_id/provider/id_token_service.rb

Class Method Summary collapse

Class Method Details

.generate(subject_id:, client_id:, nonce: nil, access_token: nil, authorization_code: nil, auth_time: nil, extra_claims: {}) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/standard_id/provider/id_token_service.rb', line 5

def generate(subject_id:, client_id:, nonce: nil, access_token: nil, authorization_code: nil, auth_time: nil, extra_claims: {})
  payload = {
    sub: subject_id,
    aud: client_id,
    nonce: nonce,
    auth_time: auth_time&.to_i
  }.compact

  payload[:at_hash] = compute_half_hash(access_token) if access_token.present?
  payload[:c_hash] = compute_half_hash(authorization_code) if authorization_code.present?
  payload.merge!(extra_claims.symbolize_keys) if extra_claims.present?

  expires_in = StandardId.config.provider.id_token_lifetime.seconds

  StandardId::JwtService.encode(payload, expires_in: expires_in)
end