CCM

Client Credential Management service (CCM) is intended for authentication of clients.

CCM supports:

  • Client authentication by username/password combination.

CCM provides REST APIs to manage client credentials and their states. CCM maintains a credential state machine summarized in the following diagram.

CCM credential state FSM

Credentials can be in one of the following states:

  • Inactive is the initial state for newly provisioned credential that has not been used to authenticate a client.
  • Active is the state credentials automatically move to after they were first used for client authentication. Credentials can be suspended or revoked from the active state.
  • Suspended state is for temporarily disabled credentials. CCM service will reject authentication requests with suspended credentials. Suspended credentials can be re-activated.
  • Revoked state is the terminal state for credentials that are no longer valid.

CCM persists all credentials-related data to PostgreSQL.

Plain credentials passwords are never stored. Irreversible satled hash is stored instead for credentials verification.

Interfaces

CCM supports a number of interfaces to perform its functional role. The key supported interfaces are summarized in the following diagram.

CCM interfaces diagram

Credential management

CCM provides a REST-based interface for:

  • provisioning new credentials
  • transitioning credentials state
  • retrieving credentials information

Kaa Tenant Manager integration

CCM supports multi-tenancy with each tenant using a separate OAuth 2.0 issuer for authentication, authorization, and resource management. The list of the existing tenants is managed by the Kaa Tenant Manager, which provides REST API for retrieving tenant security configs.

See the security configuration for more details on how to enable multi-tenancy in CCM.

Management interface

CCM exposes an HTTP-based management interface with the following endpoints:

  • GET /health returns 200 OK if the service is up and running properly, and 500 Internal Server Error otherwise. In case of errors, the response payload contains their human-redable descriptions. This endpoint can be used by Kubernetes for liveness and readiness probing.
  • GET /metrics provides service metrics in Prometheus text-based format.