Programmgesteuertes Hinzufügen von Anwendungen in Azure AD mithilfe des Clientanmeldeinformationsflusses

Zur Verwendung mit der Azure-API-Verwaltung versuche ich, @ hinzuzufüge Anwendungen programmgesteuert an ein Azure Active Directory (AAD) senden, in meinem Fall mithilfe der Graph-API.

Mein Szenario ist das folgende: Um eine Web-API zu sichern, die ich mit Azure API Management verwalten möchte, möchte ich die OAuth-Funktionalität von AAD nutzen, um die Authentifizierung und Ausgabe von JWT-Tokens zu beschleunigen, und dann einfach den Befehl validate-jwt verwenden Richtlinie zum Überprüfen, ob in Azure API Management alles in Ordnung ist. Dies hat den Vorteil, dass ich die Authentifizierung in meinem Backend-Service mehr oder weniger auslassen kann.

Dies funktioniert einwandfrei, solange ich in Azure AD eine Anwendung für die konsumierende Webanwendung erstellt habe, dies muss jedoch manuell über das Azure-Portal erfolgen. Azure APIm führt dies nicht automatisch aus.

ch wollte das Abonnement für APIs in APIm an eine andere Webanwendung delegieren, die ich schreibe, und von dort aus die Graph-API zum Erstellen einer Anwendung in der Azure AD und Erteilen von Berechtigungen für die Anwendung der API.

Das erste, was ich versuchte, war, eine dritte Anwendung (meine Dienstanwendung) mit vollständigen Anwendungsberechtigungen für die Windows Azure Active Directory-Anwendung in Azure AD zu haben. Dadurch kann meine Anwendung über die Graph REST-API auf AAD zugreifen. Ich kann mit dem client_credentials-Grant (von login.microsoft.com) ein Zugriffstoken abrufen, aber mit diesem Token kann ich kein @ ausführePOST aufhttps://graph.windows.net/(my AAD ID)/applications?api-version=1.5:

    {
        "odata.error": {
            "code": "Authorization_RequestDenied",
            "message": {
                "lang": "en",
                "value": "Insufficient privileges to complete the operation."
            }
        }
    }

Ich fand https: //msdn.microsoft.com/Library/Azure/Ad/Graph/howto/azure-ad-graph-api-permission-scope) das, auch wenn ich das @ gewährDirectory.ReadWrite.All Erlaubnis, die Anwendung (nur App) kann keine Anwendungen erstellen oder aktualisieren:

Hinwei: Schließt speziell das Erstellen oder Aktualisieren von Entitäten aus, die oben nicht aufgeführt sind. Dies umfasst: Anwendung, Oauth2PermissionGrant, AppRoleAssignment, Gerät, ServicePrincipal, TenantDetail, Domänen usw.

Das nächste, was ich ausprobierte, war das Resource Owner Password Grant grant_type=password), wobei ich zusätzlich meine eigenen Anmeldeinformationen übergebe, damit ich mich in der Graph-API ausgeben kann. Jetzt meinPOST zumapplications Endpunkt erfolgreich.

Mein Fazit lautet: Kann ich meiner Anwendung ausreichende Berechtigungen erteilen, damit ich Anwendungen programmgesteuert mithilfe des Clientanmeldeinformationsflusses hinzufügen kann, und nicht mithilfe eines Flusses, der im Namen eines Benutzers ausgeführt wird? Und wenn ja, wie geht das?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage