0

Ich entwickle eine Azure-Management-Website, die Flask verwendet. ich gegoogelt und folgende Probe herausgefunden:Management Microsoft Azure von Flask

https://github.com/Azure-Samples/active-directory-python-flask-graphapi-web-v2

Aber diese Probe ist das Microsoft Graph-API für den Zugriff auf, nicht die Azure Resource Management API.

microsoft = oauth.remote_app(
    'microsoft', 
    consumer_key='Register your app at apps.dev.microsoft.com', 
    consumer_secret='Register your app at apps.dev.microsoft.com', 
    request_token_params={'scope': 'offline_access User.Read'}, 
    base_url='https://graph.microsoft.com/v1.0/', 
    request_token_url=None, 
    access_token_method='POST', 
    access_token_url='https://login.microsoftonline.com/common/oauth2/v2.0/token', 
    authorize_url='https://login.microsoftonline.com/common/oauth2/v2.0/authorize' 
) 

denke ich, dass der Wandel base_url-https://management.azure.com/ auf der folgenden Dokumentation basiert:

https://docs.microsoft.com/azure/azure-resource-manager/resource-manager-api-authentication

Aber dieser Code nicht funktioniert.

Könnten Sie mich wissen lassen, wie man Flask + OAuth2 (unterstützt MSAL) und die Azure Management API verwendet?

Gibt es alternativ MSAL für Python?

+0

I 'Azure Active Directory v2.0 Endpunkt' verwenden möchten: https://docs.microsoft .com/de-de/azure/aktivverzeichnis/develop/active-directory-v2-flows – tsunomur

Antwort

0

Siehe Azure AD v2.0 Endpunkt restrictions on services and APIs. Der Endpunkt v2.0 gibt Zugriffstoken nur für Folgendes aus:

Die App, die das Token angefordert hat. Eine App kann ein Zugriffstoken für sich selbst erwerben, wenn die logische App aus mehreren verschiedenen Komponenten oder Tiers besteht. Um dieses Szenario in Aktion zu sehen, sehen Sie sich unsere Tutorials zum Einstieg an.

Die Outlook-E-Mail-, -Kalender- und -Kontakt-REST-APIs, die sich alle unter https://outlook.office.com befinden. Informationen zum Schreiben einer App, die auf diese APIs zugreift, finden Sie in den Office-Lernprogrammen für Anfänger.

Microsoft Graph-APIs. Sie können mehr über Microsoft Graph und die Daten erfahren, die Ihnen zur Verfügung stehen.

Die Azure-Ressourcenverwaltungs-API wird derzeit in Azure AD v2.0 nicht unterstützt.

+0

Vielen Dank! Ich habe diesen Film herausgefunden: https: //channel9.msdn.com/Events/Build/2017/P4031?ocid = player – tsunomur

0

können Sie diese Flask Beispielanwendung ändern Sie die v1 Endpunkt zu verwenden, indem eine Änderung der Konfiguration wie folgt:

microsoft = oauth.remote_app(
    'microsoft', 
    consumer_key='Register your app at apps.dev.microsoft.com', 
    consumer_secret='Register your app at apps.dev.microsoft.com', 
    base_url='https://management.azure.com', 
    request_token_url=None, 
    access_token_method='POST', 
    access_token_url='https://login.microsoftonline.com/common/oauth2/token', 
    authorize_url='https://login.microsoftonline.com/common/oauth2/authorize?resource=https://management.azure.com/' 
) 

Wesentliche Unterschiede rufen:

  • die request_token_parameters Stück entfernen
  • Ersetzen Sie die base url durch https://management.azure.com
  • Ersetzen Sie die authorize_url mit authorize_url='https://login.microsoftonline.com/common/oauth2/authorize?resource=https://management.azure.com/'

Anschließend können Sie die API-Aufruf wie folgt:

subscriptions = microsoft.get('subscriptions?api-version=2015-01-01') 
+0

Danke! Aber das ist für v1 Endpunkt ... Aber ich hoffe, v1 Endpunkt zu laufen, so sehr hilfreich, beraten Sie! Meine neuesten Code: Microsoft = oauth.remote_app ( 'Microsoft', consumer_key = '', consumer_secret = '', base_url = 'https: //management.azure.com/', request_token_url = Keine, access_token_method = 'POST', access_token_url = 'https: //login.microsoftonline.com/common/oauth2/token', authorize_url = 'https: //login.microsoftonline.com/common/oauth2/authorize? ressource = https: //management.azure.com/ ' ) – tsunomur

+0

Sorry, ich habe es versäumt, das erste Code-Snippet zu aktualisieren, nur die angeblichen Unterschiede genannt (die ich nicht gemacht habe). Danke für die Bearbeitung, jetzt ist es korrekt. – Saca

+0

Können Sie die Frage aufheben und als beantwortet markieren? – Saca

Verwandte Themen