Service Accounts, API Keys and OAuth Client Credentials
Choose machine access by identity, audience, scope, credential custody, rotation, and retirement. Understand the current NamoID Management API boundary.
Give each machine workload an identity with an owner, a defined purpose and limited access. Choose its credential separately from its permissions. Record how the credential rotates and how the workload is retired.
A service account is an identity or account model. An API key is a credential. OAuth client credentials is a grant used by a confidential client to obtain a token. These terms describe different parts of the access design.
Choose the identity before the credential
Consider a nightly job that exports aggregated order totals. It needs a narrow read operation. It should not inherit a developer's personal administrator session.
| Option | What it represents | Main review question |
|---|---|---|
| Named service identity | A workload or integration account | Who owns its permissions and lifecycle? |
| API key | A secret accepted by a service | How are scope, expiry, rotation and attribution enforced? |
| OAuth client credentials | Client authentication followed by token issuance | Which audience and permissions can the token receive? |
| Workload identity | An identity established through the runtime's trust system | Which runtime and issuer assertions does the recipient trust? |
| Delegated user grant | Access authorized in a user's context | What happens when that user or consent changes? |
Use the agent identity guide when an agent acts through delegated authority. A machine identity alone does not establish permission for every requested action.
Understand the client-credentials boundary
The OAuth client-credentials grant is for confidential clients. A client authenticates to the authorization server and requests permitted access. It does not include an interactive end-user login. Keep its credentials on a protected backend. OAuth client-credentials grant.
The following illustrates a generic token request. Use the provider's registered client-authentication method and approved endpoint.
POST /token HTTP/1.1
Host: issuer.example.test
Authorization: Basic <registered client authentication>
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials&scope=orders.readThis request shape is not a NamoID Management API example. It does not establish that a server accepts arbitrary customer resource audiences.
Bind permission to the receiving service
A signed token needs a recipient and a meaning that the recipient can validate. Check the issuer, signature, audience, expiry, token profile and required permissions. Reject a token intended for another API.
For a synthetic test, issue a token for the order-summary API. Present it to an administrator-export API. The latter should reject it even if both services trust the same signing key. JWT validation guide.
Where supported, mutual TLS can authenticate a client and bind a token to a certificate. The receiving resource must enforce that binding. Certificate management remains an operational responsibility. OAuth mutual TLS.
Keep a machine access register
Download the machine identity register. Include a business owner and an operator who can revoke access during an incident.
Record the service, environment, audience, scopes, credential identifier, expiry and rotation route. Store secret values in the approved secret-management system. Keep them out of the register itself.
Separate Test and Live credentials. A successful test run should not authorize the workload against production data.
Rehearse rotation before the old credential expires
- Identify every consumer of the current credential.
- Create the replacement through the approved process.
- Deploy the replacement to a controlled test consumer.
- Verify its expected audience and permissions.
- Move the remaining approved consumers.
- Revoke or expire the old credential.
- Confirm that the old credential fails.
- Record the result without storing either secret.
Some systems allow overlapping credentials during a transition. Others require a different deployment plan. Verify the actual behavior before adopting a rotation schedule.
Distinguish revocation from retirement
Revoking a client secret can stop new token requests. Already issued access tokens may need separate invalidation or may remain usable until expiry. The resource's enforcement model determines the result.
When retiring a workload, remove its permissions, credentials, schedules and dependent grants. Confirm that it no longer performs the operation. Preserve a minimal ownership and retirement record under your policy.
Review the NamoID boundary
NamoID's current client-credentials implementation is scoped to its Management API. It uses the resource audience https://api.namoid.in/management and management-specific permissions. Confirm registration, authentication and environment requirements before using it.
That implementation does not establish a general-purpose client-credentials service for arbitrary customer APIs. NamoID engineers can help review your machine-access requirement and the available integration path.
Share the workload, target API and required actions in Slack for an early response. Contact the NamoID team