我有一个内部公司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服务器运行时,此方法有效。
我希望这对以后的人有所帮助。