对Micosoft OAuth2的呼叫无法正常工作

时间:2018-08-08 22:46:56

标签: oauth-2.0 authorize

我有一个内部公司Web应用程序,需要访问公司SharePoint Online。我想调用OAuth2来引导用户完成身份验证过程,以便Web应用程序可以检索access_token,然后调用Microsoft Graph API。我正在使用Django / Python。

我已经在企业Azure门户中注册了该应用程序,但是当我调用/ authorize终结点时,用户看到的似乎是错误的登录页面。我希望用户看到一个显示应用程序名称和权限的页面,但用户看到的只是一个基本的登录页面。此外,当用户输入其公司电子邮件地址时,他会看到一个错误,指出“查找您的帐户时出现问题”。该用户已添加到注册应用的“用户和组”中。

据我所知,一切都配置正确。

我已经像疯了似的用Google搜索了它,但是没有找到任何帮助。

任何建议将不胜感激。

谢谢。

********************问题已解决! **************************

事实证明,我在一个错误的假设下,应该在服务器上的Django View代码中进行对Microsoft /oauth2/v2.0/authorize端点的调用(并且该调用的响应返回给浏览器)。但是,Internet上的一个示例显示,该呼叫实际上应该在浏览器中进行。

在此示例中,URL是在服务器上构建的,并作为Anchor标签发送到浏览器,如下所示:

loginUrl = "https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize"
loginUrl += "?client_id={client id}"
loginUrl += "&response_type=code"
loginUrl += "&redirect_uri=" + request.build_absolute_uri(reverse('auth'))
loginUrl += "&response_mode=query"
loginUrl += "&scope={scope names}"
loginUrl += "&state={state}"
return HttpResponse('<a href="' + loginUrl + '">Click here to log in to Microsoft Online.</a>')

当我在开发环境(http://127.0.0.1:8000)中并且从AWS Linux服务器运行时,此方法有效。

我希望这对以后的人有所帮助。

0 个答案:

没有答案