-
Notifications
You must be signed in to change notification settings - Fork 218
Using certificates
Microsoft.Identity.Web uses certificates in two situations:
-
In web apps and web APIs, to prove the identity of the application, instead of using a client secret
-
In web APIs, to decrypt tokens in the web API opted to get encrypted tokens.
Web apps and Web APIs are confidential client applications.
They can prove their identity to Azure AD or Azure AD B2C by 3 means:
- client secrets
- client certificates
- client assertions
In addition to Client secrets, Microsoft.Identity.Web supports specifying client certificates in many different ways (See Specifying certificates)
The configuration property to specify the client certificates is ClientCertificates it's an array of description of certificates
You can express the client certificates in the ClientCertificates property, which is exclusive with ClientSecret.
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"Domain": "msidentitysamplestesting.onmicrosoft.com",
"TenantId": "7f58f645-c190-4ce5-9de4-e2b7acd2a6ab",
"ClientId": "86699d80-dd21-476a-bcd1-7c1a3d471f75",
"ClientCertificates": [
{
"SourceType": "KeyVault",
"Container": "https://msidentitywebsamples.vault.azure.net",
"ReferenceOrValue": "MicrosoftIdentitySamplesCert"
}
]
}
}
You can also specify the certificate description programmatically:
MicrosoftIdentityOptions options = new MicrosoftIdentityOptions();
options.ClientCertificates = new CertificateDescription[] {
CertificateDescription.FromKeyVault("https://msidentitywebsamples.vault.azure.net",
"MicrosoftIdentitySamplesCert")
};
Web APIs can request token encryption (for privacy reasons). This is even compulsory for 1P Web APIs that access MSA identities.
You can describe the certificates to load, either by configuration, or programmatically
- from the certificate store (Windows) and a thumbprint ("440A5BE6C4BE2FF02A0ADBED1AAA43D6CF12E269")
- from the certificate store (Windows) and a distinguished name ("CN=TestCert")
- from a path on the disk and optionally a password (probably only for debugging locally)
- directly from a base64 representation of the certificate
- from Azure KeyVault.
- directly providing it (programmatically only)
Describing the certificate by configuration allows for just in time loading, rather than paying the startup cost. For instance for a web app that signs in a user, not load the certificate until an access token is needed to call a Web API.
When your certificate is in KeyVault, Microsoft.Identity.Web leverages Managed identity, therefore enabling your application to have the same code when deployed (for instance on a VM or Azure app services), or locally on your developer box (using developer credentials)
- Home
- Why use Microsoft Identity Web?
- Web apps
- Web APIs
- Using certificates
- Minimal support for .NET FW Classic
- Logging
- Azure AD B2C limitations
- Samples
- Web apps
- Web app samples
- Web app template
- Call an API from a web app
- Managing incremental consent and conditional access
- Web app troubleshooting
- Deploy to App Services Linux containers or with proxies
- SameSite cookies
- Hybrid SPA
- Web APIs
- Web API samples
- Web API template
- Call an API from a web API
- Token Decryption
- Web API troubleshooting
- web API protected by ACLs instead of app roles
- gRPC apps
- Azure Functions
- Long running processes in web APIs
- Authorization policies
- Generic API
- Customization
- Logging
- Calling graph with specific scopes/tenant
- Multiple Authentication Schemes
- Utility classes
- Setting FIC+MSI
- Mixing web app and web API
- Deploying to Azure App Services
- Azure AD B2C issuer claim support
- Performance
- specify Microsoft Graph scopes and app-permissions
- Integrate with Azure App Services authentication
- Ajax calls and incremental consent and conditional access
- Back channel proxys
- Client capabilities