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

Azure Active Directory (Azure AD) 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 Portail Azure. Toutefois, dans les scénarios d’automatisation, vous devrez peut-être automatiser la substitution 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.

Conditions préalables

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

  • Un locataire Azure AD actif.
  • Un client API tel que l’Explorateur Graph. Connectez-vous en tant qu’utilisateur dans un rôle Administrateur d’application ou utilisateur autorisé à créer et gérer des applications dans le locataire.
  • Certificat signé que vous utiliserez pour authentifier l’application. Cet article utilise un certificat auto-signé à des fins de démonstration. Pour savoir comment créer un certificat auto-signé, 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

Get-PfxCertificate -Filepath "C:\Users\admin\Desktop\20230112.cer" | Out-File -FilePath "C:\Users\admin\Desktop\20230112.cer.thumbprint.txt" ## Replace the file path with the source of your certificate

Réponse

La sortie enregistrée 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 à l’aide de PowerShell, exécutez la requête suivante.

Demande

[convert]::ToBase64String((Get-Content C:\Users\admin\Desktop\20230112.cer -Encoding byte))  | Out-File -FilePath "C:\Users\admin\Desktop\20230112.key.txt" ## Replace the file path with the location of your certificate

Réponse

La sortie enregistrée 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 un 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.

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 identifié par l’empreinte 52ED9B5038A47B9E2E2190715CC238359D4F8F73numérique .

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 Portail Azure. 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.