9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
# File 'lib/has_helpers/service_trust/signer.rb', line 9
def sign(audience:, subject: nil, capability: nil, ttl: HasHelpers::ServiceTrust.config.token_ttl)
raise ConfigurationError, "audience is required" if audience.blank?
raise ConfigurationError, "issuer is required" if config.issuer.blank?
key = KeyManager.current_signing_key
now = Time.current.to_i
payload = {
iss: config.issuer,
aud: audience,
sub: subject,
iat: now,
nbf: now,
exp: now + ttl.to_i,
jti: SecureRandom.uuid,
env: config.environment.to_s,
scope: capability_claim(capability)
}.compact
JwtCodec.encode(payload, key.to_openssl, key.kid, alg: key.algorithm)
end
|