Auth-services, certificates, IdPs, and issuer?
In Configure authorization services, the Canton docs describe how to assign a certificate for verification of JWTs:
ledger-api {
auth-services = [{
// type can be
// jwt-rs-256-crt
// jwt-es-256-crt
// jwt-es-512-crt
type = jwt-rs-256-crt
// we need a certificate file (abcd.cert)
certificate = ${JWT_CERTIFICATE_FILE}
}]
I would have expected a issuer = ..... field in this configuration or maybe an identity_provider_id. For example, the Ledger API’s IdentityProviderConfig message allows one to configure JWKS-based verification with an issuer field:
final case class IdentityProviderConfig(
identityProviderId: IdentityProviderId.Id,
isDeactivated: Boolean = false,
jwksUrl: JwksUrl,
issuer: String,
audience: Option[String],
)
Questions:
- For locally installed certificate-based verification, should the JWT’s
iss:field be “”? or is it ignored? - What is the connection between IdP configuration and the
auth-servicesconfiguration? - Am I confused about the big picture? Or has cert-based verification simply not caught up with newer configuration features?
auth-services controls how JWTs are verified (algorithm, local cert or JWKS, audience/scope), while IdentityProviderConfig is a higher-level layer for multi–identity-provider setups that use JWKS and iss/aud to route tokens to the right IdP.
When you use a locally installed certificate (jwt-*-crt), you’re effectively using only the default identity provider, so the JWT’s iss claim is either ignored or treated as the default IdP and can be empty/omitted.
You’re not missing anything conceptually, cert-based verification just predates the newer multi-IdP configuration and normally serves the default IdP, whereas extra IdPs are configured dynamically via IdentityProviderConfig and JWKS.