| name | msal-client-credentials |
| description | Client Credentials Flow for service-to-service (daemon) authentication in MSAL.NET without user involvement |
| tags | ["msal","client-credentials","daemon","service-to-service","confidential-client","background-service","machine-to-machine"] |
Client Credentials Flow Skill
Overview
Client Credentials Flow is used for service-to-service authentication without user involvement. Ideal for daemon applications and background services.
When to Use
- Service-to-service authentication
- Daemon/background applications
- Machine-to-machine communication
- No user context needed
- Automated processes
Flow Steps
- Service authenticates using client credentials (certificate or managed identity)
- Service directly calls authorization endpoint with credentials
- AAD validates credentials and returns access token
- Token cached and used to access APIs as application identity
Agent Actions
Generate Code Snippet
Agent can show code for each credential type:
Setup Guidance
Reference appropriate credential setup:
Example: Service with Certificate
public class TokenAcquisitionService
{
private readonly IConfidentialClientApplication _app;
public TokenAcquisitionService(string clientId, X509Certificate2 cert)
{
_app = ConfidentialClientApplicationBuilder
.Create(clientId)
.WithCertificate(cert)
.WithAuthority($"https://login.microsoftonline.com/{tenantId}/v2.0")
.WithCacheOptions(CacheOptions.EnableSharedCacheOptions)
.Build();
}
public async Task<string> GetAccessTokenAsync()
{
var result = await _app.AcquireTokenForClient(
new[] { "resource-uri" })
.ExecuteAsync();
return result.AccessToken;
}
}
Error Resolution
Refer to Troubleshooting Guide
Best Practices
- Use Token Caching Strategies - enable static token caching with
.WithCacheOptions(CacheOptions.EnableSharedCacheOptions) for optimal performance
- Implement Error Handling Patterns
- Monitor token acquisition using
AuthenticationResultMetadata for cache hit ratios
- Rotate certificates periodically (if using certificate-based auth)
- Use Federated Identity Credentials with Managed Identity for keyless authentication
- For additional caching options and strategies, see Token cache serialization documentation
Explain the Flow
- Credential Submission: Service authenticates directly with AAD using certificate or MI
- No User Involved: Authentication is machine-to-machine only
- Access Grant: AAD validates credentials and issues access token
- Token Caching: Token automatically cached for subsequent requests
- API Access: Token used to call downstream APIs as application identity
Decision Help
Choose Client Credentials if:
- Building daemon/background service
- Service-to-service authentication needed
- No user context involved
- Want simplest flow for automated processes
Avoid if:
- Need to access user-scoped resources
- User consent required
- Need refresh tokens for long-lived sessions