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