Partager via


Ajouter un certificat à une application à l’aide de Microsoft Graph

Le Plateforme d'identités Microsoft prend en charge trois types d’informations d’identification pour authentifier les applications et les principaux de service : les mots de passe (secrets d’application), les certificats et les informations d’identification d’identité fédérée. Si vous ne pouvez pas utiliser d’informations d’identification d’identité fédérée pour votre application, nous vous recommandons vivement d’utiliser des certificats au lieu de secrets.

Vous pouvez ajouter ou supprimer des certificats à l’aide de la centre d’administration Microsoft Entra. Toutefois, vous devrez peut-être automatiser l’ajout des informations d’identification de certificat pour votre application ou principal de service.

Cet article fournit des conseils pour l’utilisation de scripts Microsoft Graph et PowerShell pour mettre à jour les informations d’identification de certificat par programme pour une inscription d’application.

Configuration requise

Pour suivre ce didacticiel, vous avez besoin des ressources et privilèges suivants :

  • Locataire Microsoft Entra actif.
  • Un client d’API tel que Graph Explorer. Connectez-vous en tant qu’utilisateur autorisé à créer et gérer des applications dans le locataire. Le rôle Développeur d’application (d’une application dont ils sont propriétaires) et Administrateur d’application sont les rôles les moins privilégiés qui peuvent effectuer cette opération.
  • Certificat signé à utiliser pour authentifier l’application. Cet article utilise un certificat auto-signé à des fins de démonstration. Pour en générer un, consultez Créer un certificat public auto-signé pour authentifier votre application.

Attention

L’utilisation de certificats est fortement recommandée par rapport aux secrets. Toutefois, nous vous déconseillons d’utiliser des certificats auto-signés. Ils peuvent réduire la barre de sécurité de votre application en raison de divers facteurs tels que l’utilisation d’un hachage et de suites de chiffrement obsolètes ou l’absence de validation. Nous vous recommandons d’obtenir des certificats auprès d’une autorité de certification approuvée connue.

Étape 1 : Lire les détails du certificat

Pour ajouter un certificat par programmation à l’aide de Microsoft Graph, vous avez besoin de la clé du certificat. Vous pouvez éventuellement ajouter l’empreinte numérique du certificat.

[Facultatif] Obtenir l’empreinte numérique du certificat

Il est facultatif d’ajouter l’empreinte numérique du certificat à la charge utile de la demande. Si vous souhaitez ajouter l’empreinte numérique, vous pouvez exécuter la requête PowerShell suivante pour lire l’empreinte numérique du certificat. Cette demande suppose que vous avez généré et exporté le certificat vers votre lecteur local.

Demande

## Replace the file path with the source of your certificate and output path with the location where you want to save the thumprint details

Get-PfxCertificate -Filepath "C:\Users\admin\Desktop\20230112.cer" | Out-File -FilePath "C:\Users\admin\Desktop\20230112.cer.thumbprint.txt"

Réponse

La sortie dans le fichier .txt peut ressembler à ce qui suit.

Thumbprint                                Subject
----------                                -------
5A126608ED1A1366F714A4A62B7015F3262840F1  CN=20230112

Obtenir la clé de certificat

Pour lire la clé du certificat et l’enregistrer dans un fichier .txt à l’aide de PowerShell, exécutez la requête suivante.

Demande

PowerShell < 6 :

## Replace the file path with the location of your certificate

[convert]::ToBase64String((Get-Content C:\Users\admin\Desktop\20230112.cer -Encoding byte)) | Out-File -FilePath "C:\Users\admin\Desktop\20230112.key.txt"

PowerShell >= 6 :

## Replace the file path with the location of your certificate

[convert]::ToBase64String((Get-Content C:\Users\admin\Desktop\20230112.cer -AsByteStream))  | Out-File -FilePath "C:\Users\admin\Desktop\20230112.key.txt"

Réponse

La sortie dans le fichier .txt peut ressembler à ce qui suit.

Note: La clé présentée ici a été raccourcie pour plus de lisibilité.

MIIDADCCAeigAwIBAgIQP6HEGDdZ65xJTcK4dCBvZzANBgkqhkiG9w0BAQsFADATMREwDwYDVQQDDAgyMDIzMDExMjAeFw0yMzAxMTIwODExNTZaFw0yNDAxMTIwODMxNTZaMBMxETAPBgNVBAMMCDIwMjMwMTEyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAseKf1weEacJ67D6/...dG+7WMIBsIUy0xz6MmyvfSohz3oNP4jHt7pJ9TyxnvDlaxQPUbuIL+DaXVkKRm1V3GgIpKTBqMzTf4tCpy7rpUZbhcwAFw6h9A==

Étape 2 : Ajouter les détails du certificat à l’aide de Microsoft Graph

Demande

La requête suivante ajoute les détails du certificat à une application. Les paramètres sont les suivants :

  • StartDateTime est la date à laquelle ou après la création du certificat.
  • La valeur endDateTime peut être d’un an au maximum à partir de startDateTime. S’il n’est pas spécifié, le système attribue automatiquement une date 1 an après startDateTime.
  • Le type et l’utilisation doivent être AsymmetricX509Cert et Verify respectivement.
  • Affectez le nom de l’objet du certificat à la propriété displayName .
  • La clé est la valeur encodée en Base64 que vous avez générée à l’étape précédente. L’empreinte numérique est incluse dans la clé encodée et l’ajout de la clé ajoute également l’empreinte numérique.

Remarque

Si votre application dispose d’un certificat valide existant que vous souhaitez continuer à utiliser pour l’authentification, incluez les détails du certificat actuel et du nouveau dans l’objet keyCredentials de l’application. Étant donné qu’il s’agit d’un appel PATCH, qui par protocole remplace le contenu de la propriété par les nouvelles valeurs, seul le nouveau certificat remplace les certificats existants par le nouveau.

L’exemple suivant ajoute un nouveau certificat et remplace tous les certificats existants.

Note: La clé présentée ici a été raccourcie pour plus de lisibilité.

PATCH https://graph.microsoft.com/v1.0/applications/bb77f42f-dacb-4ece-b3e6-285e63c24d52
Content-type: application/json

{
    "keyCredentials": [
        {
            "endDateTime": "2024-01-11T15:31:26Z",
            "startDateTime": "2023-01-12T15:31:26Z",
            "type": "AsymmetricX509Cert",
            "usage": "Verify",
            "key": "base64MIIDADCCAeigAwIBAgIQP6HEGDdZ65xJTcK4dCBvZzANBgkqhkiG9w0BAQsFADATMREwDwYDVQQDDAgyMDIzMDExMjAeFw0yMzAxMTIwODExNTZaFw0yNDAxMTIwODMxNTZaMBMxETAPBgNVBAMMCDIwMjMwMTEyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAseKf1weEacJ67D6/...laxQPUbuIL+DaXVkKRm1V3GgIpKTBqMzTf4tCpy7rpUZbhcwAFw6h9A==",
            "displayName": "CN=20230112"
        }
    ]
}

L’exemple suivant ajoute un nouveau certificat sans remplacer le certificat existant par l’empreinte numérique 52ED9B5038A47B9E2E2190715CC238359D4F8F73.

Note: La clé présentée ici a été raccourcie pour plus de lisibilité.

PATCH https://graph.microsoft.com/v1.0/applications/bb77f42f-dacb-4ece-b3e6-285e63c24d52
Content-type: application/json

{
    "keyCredentials": [
        {
            "endDateTime": "2024-01-11T15:31:26Z",
            "startDateTime": "2023-01-12T09:31:26Z",
            "type": "AsymmetricX509Cert",
            "usage": "Verify",
            "key": "base64MIIDADCCAeigAwIBAgIQejfrj3S974xI//npv7hFHTANBgkqhkiG9w0BAQsFADATMREwDwYDVQQDDAgyMDIzMDExNDAeFw0yMzAxMTIwOTA4NThaFw0yNDAxMTIwOTI4NThaMBMxETAPBgNVBAMMCDIwMjMwMTE0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAt5vEj6j1l5wOVHR4eDGe77HWslaIVJ1NqxrXPm/...+R+U7sboj+kUvmFzXI+Ge73Liu8egL2NzOHHpO43calWgq36a9YW1yhBQR1ioEchu6jmudW3rF6ktmVqQ==",
            "displayName": "CN=20230114"
        },
        {
            "customKeyIdentifier": "52ED9B5038A47B9E2E2190715CC238359D4F8F73",
            "type": "AsymmetricX509Cert",
            "usage": "Verify",
            "key": "base64MIIDADCCAeigAwIBAgIQfoIvchhpToxKEPI4iMrU1TANBgkqhkiG9w0BAQsFADATMREwDwYDVQQDDAgyMDIzMDExMzAeFw0yMzAxMTIwODI3NTJaFw0yNDAxMTIwODQ3NTJaMBMxETAPBgNVBAMMCDIwMjMwMTEzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAw+iqg1nMjYmFcFJh/.../S5X6qoEOyJBgtfpSBANWAdA==",
            "displayName": "CN=20230113"
        }
    ]
}

Réponse

HTTP/1.1 204 No Content

Étape 3 : Tester l’authentification de l’application uniquement

Vous pouvez tester l’authentification d’application uniquement à l’aide de Microsoft Graph PowerShell, comme illustré dans l’exemple suivant.

Demande

## Authenticate using the certificate thumbprint
Connect-MgGraph -ClientID cf34b10f-50fd-4167-acf6-4f08ddd4561b -TenantId 38d49456-54d4-455d-a8d6-c383c71e0a6d -CertificateThumbprint 52ED9B5038A47B9E2E2190715CC238359D4F8F73

## Authenticate using the certificate subject name
Connect-MgGraph -ClientID 588028ea-22c2-490e-8c6b-80cd06985e8c -TenantId 38d49456-54d4-455d-a8d6-c383c71e0a6d -CertificateName CN=20230113

Réponse

Welcome To Microsoft Graph!

Pour confirmer que vous exécutez la session PowerShell Microsoft Graph sans utilisateur connecté, exécutez la requête suivante.

Get-MgContext

La réponse est similaire à ce qui suit.



ClientId              : cf34b10f-50fd-4167-acf6-4f08ddd4561b
TenantId              : 38d49456-54d4-455d-a8d6-c383c71e0a6d
CertificateThumbprint :
Scopes                :
AuthType              : AppOnly
AuthProviderType      : ClientCredentialProvider
CertificateName       : CN=20230113
Account               :
AppName               : testApp
ContextScope          : Process
Certificate           :
PSHostVersion         : 5.1.22621.963
ClientTimeout         : 00:05:00


Conclusion

Vous avez utilisé Microsoft Graph pour mettre à jour les informations d’identification de certificat d’un objet d’application. Ce processus est une alternative programmatique à l’utilisation de la centre d’administration Microsoft Entra. Vous pouvez également mettre à jour les informations d’identification de certificat pour un principal de service en suivant un processus similaire et en appelant le point de https://graph.microsoft.com/v1.0/servicePrincipals/ terminaison.