Clientcertificaat gebruiken om toegangstokens op te halen uit Azure AD

Voorbeeldcode van

In dit artikel wordt beschreven hoe u een clientcertificaat toevoegt aan de voorbeeldtoepassing Tailspin Surveys.

Wanneer u een autorisatiecodestroom of hybride stroom in OpenID Verbinding maken, wisselt de client een autorisatiecode uit voor een toegangs token. Tijdens deze stap moet de client zichzelf verifiëren bij de server.

Clientgeheim

Er zijn veel manieren om de client te verifiëren met behulp van clientgeheim, certificaat en asserten. De toepassing Tailspin Surveys is standaard geconfigureerd voor het gebruik van het clientgeheim.

Hier is een voorbeeld van een aanvraag van de client naar de IDP, die een toegang token aanvraagt. Onthoud de parameter client_secret.

POST https://login.microsoftonline.com/b9bd2162xxx/oauth2/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded

resource=https://tailspin.onmicrosoft.com/surveys.webapi
  &client_id=87df91dc-63de-4765-8701-b59cc8bd9e11
  &client_secret=i3Bf12Dn...
  &grant_type=authorization_code
  &code=PG8wJG6Y...

Het geheim is slechts een tekenreeks, dus u moet ervoor zorgen dat de waarde niet gelekt wordt. Het best practice is om het clientgeheim buiten broncodebeheer te houden. Wanneer u implementeert in Azure, moet u het geheim opslaan in een app-instelling.

Iedereen met toegang tot het Azure-abonnement kan echter de app-instellingen bekijken. Bovendien is er altijd een man om geheimen te controleren in broncodebeheer (bijvoorbeeld in implementatiescripts), deze via e-mail te delen, en meer.

Voor extra beveiliging kunt u een clientcertificaat gebruiken in plaats van een clientgeheim. De client gebruikt een certificaat om te bewijzen dat de tokenaanvraag afkomstig is van de client. Het clientcertificaat wordt opgeslagen in de sleutelkluis. Voeg voor deze optie de toe ClientCertificates onder AzureAd en geef de configuratie-instellingen op zoals hier wordt weergegeven:

   "ClientCertificates": [
      {
        "SourceType": "KeyVault",
        "KeyVaultUrl": "https://msidentitywebsamples.vault.azure.net",
        "KeyVaultCertificateName": "MicrosoftIdentityCert"
      }
     ]

Notitie

Zie Certificaten gebruiken met Microsoft.Identity.Webvoor meer informatie.

Volgende