Class: Philiprehberger::JwtKit::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/philiprehberger/jwt_kit/configuration.rb

Overview

Configuration singleton for JWT settings.

Examples:

Philiprehberger::JwtKit.configure do |c|
  c.secret = 'my-secret-key'
  c.algorithm = :hs256
  c.issuer = 'my-app'
  c.expiration = 3600
end

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfiguration

Returns a new instance of Configuration.



36
37
38
39
40
41
42
43
44
# File 'lib/philiprehberger/jwt_kit/configuration.rb', line 36

def initialize
  @secret = nil
  @algorithm = :hs256
  @issuer = nil
  @audience = nil
  @expiration = 3600
  @refresh_expiration = 86_400 * 7
  @secrets = nil
end

Instance Attribute Details

#algorithmSymbol

Returns signing algorithm (:hs256, :hs384, :hs512).

Returns:

  • (Symbol)

    signing algorithm (:hs256, :hs384, :hs512)



19
20
21
# File 'lib/philiprehberger/jwt_kit/configuration.rb', line 19

def algorithm
  @algorithm
end

#audienceString, ...

Returns expected audience for the ‘aud` claim.

Returns:

  • (String, Array<String>, nil)

    expected audience for the ‘aud` claim



25
26
27
# File 'lib/philiprehberger/jwt_kit/configuration.rb', line 25

def audience
  @audience
end

#expirationInteger

Returns default TTL in seconds for access tokens.

Returns:

  • (Integer)

    default TTL in seconds for access tokens



28
29
30
# File 'lib/philiprehberger/jwt_kit/configuration.rb', line 28

def expiration
  @expiration
end

#issuerString?

Returns optional issuer for the ‘iss` claim.

Returns:

  • (String, nil)

    optional issuer for the ‘iss` claim



22
23
24
# File 'lib/philiprehberger/jwt_kit/configuration.rb', line 22

def issuer
  @issuer
end

#refresh_expirationInteger

Returns default TTL in seconds for refresh tokens.

Returns:

  • (Integer)

    default TTL in seconds for refresh tokens



31
32
33
# File 'lib/philiprehberger/jwt_kit/configuration.rb', line 31

def refresh_expiration
  @refresh_expiration
end

#secretString?

Returns HMAC secret key (required for HS* algorithms).

Returns:

  • (String, nil)

    HMAC secret key (required for HS* algorithms)



16
17
18
# File 'lib/philiprehberger/jwt_kit/configuration.rb', line 16

def secret
  @secret
end

#secretsArray<Hash>?

Returns array of { kid: String, secret: String } for key rotation.

Returns:

  • (Array<Hash>, nil)

    array of { kid: String, secret: String } for key rotation



34
35
36
# File 'lib/philiprehberger/jwt_kit/configuration.rb', line 34

def secrets
  @secrets
end

Instance Method Details

#algorithm_nameString

Returns the JWT algorithm header value.

Returns:

  • (String)

    algorithm name (e.g. ‘HS256’)



62
63
64
# File 'lib/philiprehberger/jwt_kit/configuration.rb', line 62

def algorithm_name
  @algorithm.to_s.upcase
end

#digest_algorithmString

Returns the OpenSSL digest algorithm name.

Returns:

  • (String)

    digest name (e.g. ‘SHA256’)

Raises:

  • (Error)

    if the algorithm is unsupported



50
51
52
53
54
55
56
57
# File 'lib/philiprehberger/jwt_kit/configuration.rb', line 50

def digest_algorithm
  case @algorithm
  when :hs256 then 'SHA256'
  when :hs384 then 'SHA384'
  when :hs512 then 'SHA512'
  else raise Error, "Unsupported algorithm: #{@algorithm}"
  end
end