Verwalten einer Azure AD-Anwendung mit Microsoft Graph

Ihre App muss in Azure AD registriert werden, bevor die Microsoft Identity Platform sie für den Zugriff auf Daten autorisieren kann, die in Azure Active Directory (Azure AD) oder Microsoft 365-Mandanten gespeichert sind. Diese Bedingung gilt für Apps, die Sie selbst entwickeln, die sich im Besitz Ihrer Organisation befinden 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 Microsoft Graph verwenden, um App- und Dienstprinzipalobjekte zu verwalten, einschließlich der Eigenschaften, Berechtigungen und Rollenzuweisungen.

Voraussetzungen

Für dieses Tutorial benötigen Sie die folgenden Ressourcen und Berechtigungen:

  • Ein funktionierender Azure AD-Mandant.
  • Melden Sie sich beim Graph-Explorer als Benutzer mit einer Anwendungsadministratorrolle oder als Benutzer an, der zum Erstellen und Verwalten von Anwendungen im Mandanten berechtigt ist.

Registrieren einer Anwendung bei Azure AD

Anforderung

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

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

{
  "displayName": "My application"
}

Antwort

Der folgende Code ist ein Beispiel für die Standardantwort, die alle standardmäßig zurückgegebenen Eigenschaften enthält. Der Anwendung wird eine ID zugewiesen, die im Azure AD-Ökosystem global eindeutig ist.

HTTP/1.1 201 Created
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#applications/$entity",
    "id": "0d0021e2-eaab-4b9f-a5ad-38c55337d63e",
    "deletedDateTime": null,
    "appId": "5f0f8757-988d-474c-9f85-74a6bc70dfd0",
    "applicationTemplateId": null,
    "disabledByMicrosoftStatus": null,
    "createdDateTime": "2022-02-08T08:58:36.7669085Z",
    "displayName": "My application",
    "description": null,
    "groupMembershipClaims": null,
    "identifierUris": [],
    "isDeviceOnlyAuthSupported": null,
    "isFallbackPublicClient": null,
    "notes": null,
    "publisherDomain": "M365x010717.onmicrosoft.com",
    "serviceManagementReference": null,
    "signInAudience": "AzureADandPersonalMicrosoftAccount",
    "tags": [],
    "tokenEncryptionKeyId": null,
    "defaultRedirectUri": null,
    "certification": null,
    "optionalClaims": null,
    "addIns": [],
    "api": {
        "acceptMappedClaims": null,
        "knownClientApplications": [],
        "requestedAccessTokenVersion": 2,
        "oauth2PermissionScopes": [],
        "preAuthorizedApplications": []
    },
    "appRoles": [],
    "info": {
        "logoUrl": null,
        "marketingUrl": null,
        "privacyStatementUrl": null,
        "supportUrl": null,
        "termsOfServiceUrl": null
    },
    "keyCredentials": [],
    "parentalControlSettings": {
        "countriesBlockedForMinors": [],
        "legalAgeGroupRule": "Allow"
    },
    "passwordCredentials": [],
    "publicClient": {
        "redirectUris": []
    },
    "requiredResourceAccess": [],
    "verifiedPublisher": {
        "displayName": null,
        "verifiedPublisherId": null,
        "addedDateTime": null
    },
    "web": {
        "homePageUrl": null,
        "logoutUrl": null,
        "redirectUris": [],
        "implicitGrantSettings": {
            "enableAccessTokenIssuance": false,
            "enableIdTokenIssuance": false
        }
    },
    "spa": {
        "redirectUris": []
    }
}

Der signInAudience-Eigenschaft wird der Standardwert AzureADandPersonalMicrosoftAccountzugewiesen. Diese Konfiguration ermöglicht es allen Benutzern, die mit einem beliebigen Kontotyp angemeldet sind, einschließlich Azure AD-Konten, persönlichen Microsoft-Konten und Anmeldeinformationen für soziale Medien, Ihre App zu verwenden. Sie können signInAudience in einen anderen Bereich ändern.

Wenn Sie die Anwendung als Benutzer mit Administratorrechten erstellt haben, wurde Ihnen automatisch der Besitz der Anwendung zugewiesen. Sie können den Besitz bestätigen, indem Sie die Besitzer-Navigationseigenschaft über GET https://graph.microsoft.com/v1.0/applications/0d0021e2-eaab-4b9f-a5ad-38c55337d63e/ownersabrufen. Sie können der Anwendung auch den Besitz eines anderen Benutzers oder einer Anderen App zuweisen.

Konfigurieren anderer grundlegender Eigenschaften für Ihre App

Delegierte Berechtigung mit den geringsten Rechten: 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 vor 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

Delegierte Berechtigung mit den geringsten Rechten: 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 die Azure-Portal 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 mithilfe der Azure-Portal 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 Rechten: 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

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 Rechten: 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 $count finden Sie unter Erweiterte Abfragefunktionen für Azure AD-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 Rechten: 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 Rechten: Application.ReadWrite.All

Die folgende Anforderung verweist mithilfe seiner appId auf den Dienstprinzipal. 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"
}

Siehe auch