module

Authly::ClaimsProvider

Interface for adding custom claims to JWT access tokens

Implement this module to inject application-specific claims into JWT tokens during generation. This is useful for adding user metadata, roles, permissions, or any other custom data.

Example:

class MyClaimsProvider
  include Authly::ClaimsProvider

  def enrich_access_token(payload, client_id, sub, scope)
    user = User.find?(sub)
    if user
      payload["name"] = user.name
      payload["email"] = user.email
      payload["roles"] = user.roles
    end
    payload
  end
end

Authly.configure do |config|
  config.claims_provider = MyClaimsProvider.new
end

Instance methods

enrich_access_token(payload : JWTPayload, client_id : String, sub : String, scope : String) : JWTPayload

Called during token generation to enrich the JWT payload

@param payload - The base JWT payload with standard claims (sub, iss, iat, exp, etc.) @param client_id - The OAuth client ID requesting the token @param sub - The subject (typically user ID) @param scope - Space-separated list of granted scopes @return Modified payload hash with additional claims

Source