带有 Web 应用程序的 Microsoft Identity Platform(在 Python 中)***

Microsoft Identity Platform with web application (In Python)***

我一直在与 'Integration of Microsoft Identity Platform with a Python web application' ( https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-v2-python-webapp) 合作。我试图在 python 网络应用程序的帮助下访问 Microsoft 的图表 API。

快速地说,我的问题是:成功接受微软帐户的凭据后,它在网页上向我显示此问题:我们无法完成您的 request:invalid_request:为输入参数 'redirect_uri' 提供的值无效。预期值是与为此客户端应用程序注册的重定向 URI 相匹配的 URI。

我尝试查看许多解决方案,但其中 none 有效。我也试过这个解决方案 - https://github.com/microsoftgraph/msgraph-training-uwp/issues/15

但这并没有解决 python 的问题。问题还是一样。

我按照说明做了一切 -

  1. 从 Microsoft Graph api 文档下载 python 项目 (https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-v2-python-webapp)

  2. 在Azure App注册中注册。

  3. 身份验证 - 重定向 URI - http://localhost:5000/getAToken(文档建议 url) -> 我在 azure 中添加了相同的 url,我也尝试将 'https' 和 'http' 都放入。

  4. 获得秘钥。 (根据证书和秘密)

  5. 添加了所需的权限。

  6. 我更改了 app.config 文件,从我的 azure 应用程序注册中获取所有详细信息(我正在添加下面的代码) 7.I 没有更改我的 app.py 文件中的任何内容。

  7. 启动Flask服务器,终于打开了需要的localhost地址。

请帮我看看我哪里做错了,我要改正什么。我真的很感激。 提前致谢。

App.config

import os

CLIENT_SECRET = "my key" 

AUTHORITY = "https://login.microsoftonline.com/common"  # For multi-tenant app

CLIENT_ID = "my id here"

REDIRECT_PATH = "/getAToken"    

ENDPOINT = 'https://graph.microsoft.com/v1.0/users'  

SCOPE = ["User.ReadBasic.All"]

SESSION_TYPE = "filesystem"  # So token cache will be stored in server-side session

我刚刚尝试了您发布的示例,对我来说效果很好。

假设您确定 flask 在端口 5000 上 运行,

请尝试将您的权限URL更改为https://login.microsoftonline.com/yourtenantid

我尝试使用 common 但失败了。与不同的消息。但相似。

我的问题已解决,请经常检查这些:

  1. 创建应用程序注册时,您需要select支持的帐户类型:任何组织目录中的帐户(任何 Azure AD Ddirectory-multitenant)和个人 Microsoft 帐户。

  2. 在 Web 配置中输入您的重定向 URI,我在 SPA 中做错了。

  3. 而不是在浏览器中键入 http://127.0.0.1:5000/ type 'http://localhost:5000/'。我知道它是一样的,但它对我产生了影响。

  4. 您不能为 Azure 活动目录使用免费的 Microsoft 帐户,您必须使用付费高级版本。您可以提供卡的详细信息并免费使用一个月。

希望对您有所帮助。谢谢