Verwalten einer Microsoft Entra-Anwendung mit Microsoft Graph

Ihre App muss in der Microsoft Entra-ID registriert sein, bevor die Microsoft Identity Platform sie für den Zugriff auf daten autorisieren kann, die in der Microsoft-Cloud gespeichert sind. Diese Bedingung gilt für Apps, die Sie selbst entwickeln, die Ihr Mandant besitzt oder auf die Sie über ein aktives Abonnement zugreifen.

Viele Einstellungen für Apps werden als Objekte aufgezeichnet, auf die mit Microsoft Graph zugegriffen, aktualisiert oder gelöscht werden kann. In diesem Artikel erfahren Sie, wie Sie Mit Microsoft Graph Details von App- und Dienstprinzipalobjekten verwalten, einschließlich der Eigenschaften, Berechtigungen und Rollenzuweisungen.

Voraussetzungen

Zum Testen der API-Vorgänge benötigen Sie die folgenden Ressourcen und Berechtigungen:

  • Ein funktionierender Microsoft Entra-Mandant.
  • Melden Sie sich beim Graph-Explorer als Benutzer mit Berechtigungen an, die zum Erstellen und Verwalten von Anwendungen im Mandanten berechtigt sind.
  • Gewähren Sie sich die delegierte Berechtigung mit den geringsten Berechtigungen, die für den Vorgang angegeben ist.

Registrieren einer Anwendung mit microsoft Entra ID

Die folgende Anforderung erstellt eine App, indem nur die erforderliche displayName-Eigenschaft angegeben wird. Anderen Eigenschaften werden die Standardwerte zugewiesen.

Delegierte Berechtigung mit den geringsten Berechtigungen: Application.ReadWrite.All.

POST https://graph.microsoft.com/v1.0/applications
Content-type: application/json

{
  "displayName": "My application"
}

Die Anforderung gibt eine 201 Created Antwort mit dem Anwendungsobjekt im Antworttext zurück. Der Anwendung wird eine ID zugewiesen, die für Apps im Mandanten eindeutig ist, und eine appId , die im Microsoft Entra ID-Ökosystem global eindeutig ist.

Erstellen eines Dienstprinzipals für eine Anwendung

Delegierte Berechtigung mit den geringsten Berechtigungen: Application.ReadWrite.All.

POST https://graph.microsoft.com/v1.0/servicePrincipals
Content-type: application/json

{
  "appId": "fc876dd1-6bcb-4304-b9b6-18ddf1526b62"
}

Die Anforderung gibt eine 201 Created Antwort mit dem Dienstprinzipalobjekt im Antworttext zurück.

Adressieren einer Anwendung oder eines Dienstprinzipalobjekts

Sie können eine Anwendung oder einen Dienstprinzipal anhand ihrer ID oder ihrer appId adressieren, wobei ID als Objekt-ID und appId im Microsoft Entra Admin Center als Anwendungs-ID (Client-ID) bezeichnet wird. Diese Syntaxen werden für alle HTTP CRUD-Vorgänge für Anwendungen und Dienstprinzipale unterstützt.

Um eine Anwendung oder einen Dienstprinzipal anhand ihrer ID zu adressieren.

https://graph.microsoft.com/v1.0/applications/{applicationObjectId}
https://graph.microsoft.com/v1.0/servicePrincipals/{servicePrincipalObjectId}

So adressieren Sie eine Anwendung oder einen Dienstprinzipal anhand ihrer appId.

https://graph.microsoft.com/v1.0/applications(appId='appId')
https://graph.microsoft.com/v1.0/servicePrincipals(appId='appId')

Darüber hinaus können Sie ein Anwendungsobjekt mit eindeutigem uniqueName adressieren. Sie können diese Eigenschaft verwenden, um eine Anwendung mit dem eindeutigen Namen zu erstellen, wenn sie nicht vorhanden ist, oder sie aktualisieren, wenn sie vorhanden ist. ein Vorgang, der als "Upsert" bezeichnet wird.

Erstellen Sie eine Anwendung mit dem angegebenen uniqueName, falls sie nicht vorhanden ist, und aktualisieren Sie sie andernfalls.

PATCH https://graph.microsoft.com/v1.0/applications(uniqueName='{uniqueName}')
Content-Type: application/json
Prefer: create-if-missing

{
  "displayName": "Display name"
}

Konfigurieren anderer grundlegender Eigenschaften für Ihre App

Delegierte Berechtigung mit den geringsten Berechtigungen: Application.ReadWrite.All.

Sie konfigurieren die folgenden grundlegenden Eigenschaften für die App.

  • Fügen Sie Tags für die Kategorisierung in der Organisation hinzu. Verwenden Sie außerdem das HideApp Tag, um die App aus "Meine Apps" und dem Microsoft 365-Startprogramm auszublenden.
  • Fügen Sie grundlegende Informationen hinzu, einschließlich des Logos, der Nutzungsbedingungen und der Datenschutzerklärung.
  • Speichern von Kontaktinformationen zur Anwendung
PATCH https://graph.microsoft.com/v1.0/applications/0d0021e2-eaab-4b9f-a5ad-38c55337d63e/
Content-type: application/json

{
    "tags": [
        "HR",
        "Payroll",
        "HideApp"
    ],
    "info": {
        "logoUrl": "https://cdn.pixabay.com/photo/2016/03/21/23/25/link-1271843_1280.png",
        "marketingUrl": "https://www.contoso.com/app/marketing",
        "privacyStatementUrl": "https://www.contoso.com/app/privacy",
        "supportUrl": "https://www.contoso.com/app/support",
        "termsOfServiceUrl": "https://www.contoso.com/app/termsofservice"
    },
    "web": {
        "homePageUrl": "https://www.contoso.com/",
        "logoutUrl": "https://www.contoso.com/frontchannel_logout",
        "redirectUris": [
            "https://localhost"
        ]
    },
    "serviceManagementReference": "Owners aliases: Finance @ contosofinance@contoso.com; The Phone Company HR consulting @ hronsite@thephone-company.com;"
}

Beschränken der App-Anmeldung auf nur zugewiesene Identitäten

Der folgende Vorgang beschränkt die Identitäten, die sich bei einer App anmelden können, auf die Identitäten, denen alle Rollen in der App zugewiesen sind.

Delegierte Berechtigung mit den geringsten Berechtigungen: Application.ReadWrite.All.

PATCH https://graph.microsoft.com/v1.0/servicePrincipals/89473e09-0737-41a1-a0c3-1418d6908bcd

{
    "appRoleAssignmentRequired": true
}

Zuweisen von Berechtigungen zu einer App

Sie können einer App zwar Über das Microsoft Entra Admin Center Berechtigungen zuweisen, aber Sie weisen Berechtigungen auch über Microsoft Graph zu, indem Sie die requiredResourceAccess-Eigenschaft des App-Objekts aktualisieren. Sie müssen sowohl vorhandene als auch neue Berechtigungen übergeben. Die Übergabe nur neuer Berechtigungen überschreibt und entfernt die vorhandenen Berechtigungen, denen noch keine Zustimmung erteilt wurde.

Durch das Zuweisen von Berechtigungen werden diese nicht automatisch für die App gewährt. Sie müssen weiterhin die Administratoreinwilligung über das Microsoft Entra Admin Center erteilen. Informationen zum Erteilen von Berechtigungen ohne interaktive Zustimmung finden Sie unter Programmgesteuertes Gewähren oder Widerrufen von API-Berechtigungen.

Delegierte Berechtigung mit den geringsten Berechtigungen: Application.ReadWrite.All.

PATCH https://graph.microsoft.com/v1.0/applications/581088ba-83c5-4975-b8af-11d2d7a76e98
Content-Type: application/json

{
    "requiredResourceAccess": [
        {
            "resourceAppId": "00000002-0000-0000-c000-000000000000",
            "resourceAccess": [
                {
                    "id": "311a71cc-e848-46a1-bdf8-97ff7156d8e6",
                    "type": "Scope"
                },
                {
                    "id": "3afa6a7d-9b1a-42eb-948e-1650a849e176",
                    "type": "Role"
                }
            ]
        }
    ]
}

Erstellen von App-Rollen

Erstellen von App-Rollen für ein Anwendungsobjekt

Um vorhandene App-Rollen beizubehalten, schließen Sie sie in die Anforderung ein. Andernfalls werden sie durch das neue -Objekt ersetzt.

PATCH https://graph.microsoft.com/v1.0/applications/bbd46130-e957-4c38-a116-d4d02afd1057
Content-Type: application/json

{
    "appRoles": [
        {
            "allowedMemberTypes": [
                "User",
                "Application"
            ],
            "description": "Survey.Read",
            "displayName": "Survey.Read",
            "id": "7a9ddfc4-cc8a-48ea-8275-8ecbffffd5a0",
            "isEnabled": false,
            "origin": "Application",
            "value": "Survey.Read"
        }
    ]
}

Verwalten von Besitzern

Identifizieren von besitzerlosen Dienstprinzipalen und Dienstprinzipalen mit einem Besitzer

Delegierte Berechtigung mit den geringsten Berechtigungen: Application.ReadWrite.All.

Für diese Anforderung muss die Kopfzeile ConsistencyLevel auf eventual festgelegt werden, da $count in der Anforderung enthalten ist. Weitere Informationen zur Verwendung von ConsistencyLevel und $countfinden Sie unter Erweiterte Abfragefunktionen für Verzeichnisobjekte.

Diese Anforderung gibt auch die Anzahl der Apps zurück, die der Filterbedingung entsprechen.

GET https://graph.microsoft.com/v1.0/servicePrincipals?$filter=owners/$count eq 0 or owners/$count eq 1&$count=true
ConsistencyLevel: eventual

Zuweisen eines Besitzers zu einer App

Delegierte Berechtigung mit den geringsten Berechtigungen: Application.ReadWrite.All.

In der folgenden Anforderung 8afc02cb-4d62-4dba-b536-9f6d73e9be26 ist die Objekt-ID für einen Benutzer oder Dienstprinzipal.

POST https://graph.microsoft.com/v1.0/applications/7b45cf6d-9083-4eb2-92c4-a7e090f1fc40/owners/$ref
Content-Type: application/json

{
    "@odata.id": "https://graph.microsoft.com/v1.0/directoryObjects/8afc02cb-4d62-4dba-b536-9f6d73e9be26"
}

Zuweisen eines Besitzers zu einem Dienstprinzipal

Delegierte Berechtigung mit den geringsten Berechtigungen: Application.ReadWrite.All.

Die folgende Anforderung verweist mithilfe seiner appId auf den Dienstprinzipal. Alternativ können Sie mithilfe der Objekt-ID im Muster ../servicePrincipals/{bject ID}/owners/$refdarauf verweisen. 8afc02cb-4d62-4dba-b536-9f6d73e9be26 ist die Objekt-ID für einen Benutzer oder Dienstprinzipal.

POST https://graph.microsoft.com/v1.0/servicePrincipals(appId='46e6adf4-a9cf-4b60-9390-0ba6fb00bf6b')/owners/$ref
Content-Type: application/json

{
    "@odata.id": "https://graph.microsoft.com/v1.0/directoryObjects/8afc02cb-4d62-4dba-b536-9f6d73e9be26"
}

Sperren vertraulicher Eigenschaften für Dienstprinzipale

Mit der App-Instanzsperre können Sie vertrauliche Eigenschaften Ihrer mehrinstanzenfähigen Apps vor nicht autorisierter Manipulation schützen. Die folgenden Eigenschaften des Dienstprinzipalobjekts können gesperrt werden:

  • keyCredentials, wobei der Verwendungstyp oder VerifyistSign.
  • passwordCredentials, wobei der Verwendungstyp oder VerifyistSign.
  • tokenEncryptionKeyId-Eigenschaft .

Sie verwalten die App-Instanzsperrfunktion über die servicePrincipalLockConfiguration-Eigenschaft des Anwendungsobjekts der mehrinstanzenfähigen App.

So sperren Sie alle vertraulichen Eigenschaften eines Dienstprinzipals

Wenn isEnabled und allProperties auf truefestgelegt sind, auch wenn andere Eigenschaften des servicePrincipalLockConfiguration-Objekts sind null, sind alle vertraulichen Eigenschaften des Dienstprinzipals gesperrt.

PATCH https://graph.microsoft.com/beta/applications/a0b7f39e-3139-48aa-9397-f46fb63102f7

{
    "servicePrincipalLockConfiguration": {
        "isEnabled": true,
        "allProperties": true
    }
}

So sperren Sie bestimmte sensible Eigenschaften eines Dienstprinzipals

Im folgenden Beispiel werden die Eigenschaften keyCredentials und passwordCredentials des Dienstprinzipals gesperrt und das Feature zum Sperren der App-Instanz aktiviert.

PATCH https://graph.microsoft.com/beta/applications/a0b7f39e-3139-48aa-9397-f46fb63102f7

{
    "servicePrincipalLockConfiguration": {
        "isEnabled": true,
        "credentialsWithUsageSign": true,
        "credentialsWithUsageVerify": true
    }
}

Konfigurieren vertrauenswürdiger Zertifizierungsstellen für Apps

Sie können die Verwendung von Zertifikatanmeldeinformationen für Apps in Ihrem Mandanten auf die Zertifikate beschränken, die von vertrauenswürdigen Zertifizierungsstellen ausgestellt wurden. Diese Richtlinie wird erzwungen, wenn Sie einer App ein Zertifikat hinzufügen, und wirkt sich nicht auf vorhandene Zertifikate aus, es sei denn, sie werden rotiert. Wenn eine App versucht, ihre Zertifikatanmeldeinformationen zu rotieren, durchläuft sie die Richtlinienauswertung, um sicherzustellen, dass die hinzugefügten Anmeldeinformationen der vertrauenswürdigen Zertifizierungsstelle entsprechen.

Schritt 1: Erstellen einer Zertifikatskette der Vertrauensstellung

Delegierte Berechtigung mit den geringsten Berechtigungen: AppCertTrustConfiguration.Read.All Microsoft Entra-Rolle mit den geringsten Rechten: Application Administrator

POST https://graph.microsoft.com/beta/certificateAuthorities/certificateBasedApplicationConfigurations

{
    "displayName": "Trusted Certificate Chain of Trust for Contoso",
    "description": "The Trusted Certificate Chain of Trust containing a certificate chain used by app policy, to only allow application certificates from selected issuer.",
    "trustedCertificateAuthorities": [
        {
            "isRootAuthority": true,
            "certificate": "MIIFVjCCAz6gAwIBAgIQJdrL...UyNDIyNTcwM1owPDE …="
        },
        {
            "isRootAuthority": false,
            "certificate": QAAAAAAWjABAQsFADA8M...UyNDIyNTcwM1o …="
        }
    ]
}

Die Anforderung gibt ein 200 OK Antwortobjekt zurück. Die Antwort enthält die ID der Zertifikatskette des Vertrauensobjekts. Angenommen, die ID ist eec5ba11-2fc0-4113-83a2-ed986ed13743.

Schritt 2: Zuweisen der Zertifikatvertrauenskette zu einer Anwendungsverwaltungsrichtlinie

Im folgenden Beispiel wird eine Richtlinie eingerichtet, um sicherzustellen, dass apps im Mandanten nur Zertifikate hinzugefügt werden können, die von der im vorherigen Schritt definierten Zwischenzertifizierungsstelle ausgestellt wurden. Das applicationRestrictions>keyCredentials-Objekt definiert einen restrictionType mit dem Wert trustedCertificateAuthority, der auf die erstellte ID verweist. Da diese Richtlinie auf die Standardmäßige App-Verwaltungsrichtlinie auf Mandantenebene angewendet wird, wird sie für alle Apps erzwungen, die im Mandanten erstellt wurden, und es werden Versuche abgelehnt, nicht kompatible Zertifikate als Teil der Zertifikatanmeldeinformationen einer App hinzuzufügen.

Diese Richtlinie stellt sicher, dass Apps nur Zertifikate von der angegebenen Zwischenzertifizierungsstelle hinzugefügt werden können. Das applicationRestrictions>keyCredentials-Objekt legt einen restrictionType auf trustedCertificateAuthorityfest, wobei auf die erstellte ID verwiesen wird. Diese Richtlinie gilt für alle Apps im Mandanten und lehnt alle nicht konformen Zertifikate ab.

Delegierte Berechtigung mit den geringsten Berechtigungen: Policy.Read.ApplicationConfiguration Microsoft Entra-Rolle mit den geringsten Rechten: Security Administrator

PATCH https://graph.microsoft.com/v1.0/policies/defaultAppManagementPolicy

{
  "id": "d015220e-9789-4e8e-bbcc-270fe419229d",
  "description": "Lorem ipsum",
  "displayName": "Credential management policy",
  "isEnabled": true,
  "applicationRestrictions": {
    "passwordCredentials": [
      {
        "restrictionType": "passwordLifetime",
        "maxLifetime": "P14D",
        "restrictForAppsCreatedAfterDateTime": "2020-01-01T07:00:00Z"
      }
    ],
    "keyCredentials": [
      {
        "restrictionType": "certificateLifetime",
        "restrictForAppsCreatedAfterDateTime": "2020-01-01T10:37:00Z",
        "maxLifetime": "P90D"
      },
      {
        "restrictionType": "trustedCertificateAuthority",
        "certificateBasedApplicationConfigurationIds": [
          "eec5ba11-2fc0-4113-83a2-ed986ed13743"
        ],
        "restrictForAppsCreatedAfterDateTime": "2019-10-19T10:37:00Z"
      }
    ]
  }
}