0

我正在開發使用Flask的Azure管理網站。 我用Google搜索,發現了下面的示例:管理Microsoft Azure Flask

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

但這樣本是訪問微軟圖形API,而不是在Azure資源管理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' 
) 

我認爲,改變base_urlhttps://management.azure.com/基於下列文件:

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

但這代碼沒有工作。

您能否告訴我如何使用Flask + OAuth2(支持的MSAL)和Azure Management API?

另外,是否有Python的MSAL?

+0

我想用 'Azure中的Active Directory V2.0端點': https://docs.microsoft .com/en-us/azure/active-directory/develop/active-directory-v2-flows – tsunomur

回答

0

請參考Azure AD v2.0端點restrictions on services and APIs。 v2.0端點僅針對以下問題發佈訪問令牌:

請求該令牌的應用程序。如果邏輯應用程序由多個不同的組件或層組成,則應用程序可以爲自己獲取訪問令牌。要查看這個場景,請查看我們的入門教程。

Outlook Mail,Calendar和Contacts REST API,全部位於https://outlook.office.com。要了解如何編寫訪問這些API的應用程序,請參閱Office入門教程。

Microsoft Graph API。您可以瞭解有關Microsoft Graph和您可用的數據的更多信息。

因此,Azure AD v2.0端點目前不支持Azure資源管理API。

+0

謝謝!我找到了這部電影:https://channel9.msdn.com/Events/Build/2017/P4031?ocid =玩家 – tsunomur

0

可以修改同一瓶示例應用程序通過更改配置爲使用V1端點:

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/' 
) 

主要區別叫喚:

  • 取出request_token_parameters件
  • base url更換爲https://management.azure.com
  • 更換authorize_urlauthorize_url='https://login.microsoftonline.com/common/oauth2/authorize?resource=https://management.azure.com/'

然後,您可以調用API如下:

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

謝謝!但是,這是v1的端點... 但是我希望運行v1端點,所以非常有用的建議! 我的最新代碼: 微軟= oauth.remote_app( '微軟', CONSUMER_KEY = '', CONSUMER_SECRET = '', BASE_URL =的 'https://management.azure.com/', request_token_url =無, access_token_method ='POST',access_token_url ='https://login.microsoftonline.com/common/oauth2/token', authorize_url ='https://login.microsoftonline.com/common/oauth2/authorize?資源= https://management.azure.com/' ) – tsunomur

+0

對不起,我沒有更新第一個代碼片段,只叫出所謂的差異(我沒有做出)。感謝編輯,現在它是正確的。 – Saca

+0

你可以upvote並將問題標記爲已回答嗎? – Saca