Oauth 2.0 具有后端web应用调用Graph API的本机应用的Oauth2流
我有以下设置:Oauth 2.0 具有后端web应用调用Graph API的本机应用的Oauth2流,oauth-2.0,azure-active-directory,adal,Oauth 2.0,Azure Active Directory,Adal,我有以下设置: web应用程序(Jetty/Java) 本机客户端(iOS)(调用我的webapp) Microsoft Graph API(从我的webapp调用) 其想法是用户应该使用其Office 365凭据使用OpenID/Oauth2登录。然后,webapp将代表用户调用Microsoft Graph API(以及脱机) 为了实现这一点,我非常确定我需要使用授权类型:“授权代码授权”。 我可以找到很多基于浏览器的应用程序的Oauth2流示例,以及当本机应用程序直接调用Graph A
- web应用程序(Jetty/Java)
- 本机客户端(iOS)(调用我的webapp)
- Microsoft Graph API(从我的webapp调用)
或者,如果整个流程出现在浏览器中,并且作为最后一步,我使用类似myapp scheme的内容再次打开应用程序://?sessionid=[我们自己的会话]?对于您的场景,您应该使用 可以用作参考的服务器端示例是-注意,此示例是一个使用JavaScript SPA作为客户端的.NET示例-但希望它可以指导您。您可以使用此示例概述如何为web api请求令牌
请注意,您的项“1.”表明您正在使用“v2”终结点。“v2”终结点有一些限制,包括您尝试完成的场景(请求Web API的访问令牌)-请参阅这些限制的相关信息,因此我建议在您的场景中使用v1端点,这意味着您只能验证公司帐户(而不是MSA)。我上面提到的文档和示例使用v1端点。谢谢Andre,我将查看这些链接!后续问题:我没有提到我们也有一个基于浏览器的客户端,它有一个更简单的方法(我们在Java后端拥有用户访问和刷新令牌)。有什么理由我们不能将本机客户端视为浏览器,实现与我在原始问题最后一句中提到的类似的功能吗?我现在可以自己回答。将本机应用视为浏览器并使用myapp scheme://?sessionid=[我们自己的会话]当重新打开应用程序时,将使我们面临会话劫持。我们还将构建自己的Oauth2流,这听起来不是一个好主意。测试了Andre现在描述的方法,它需要更多的编码和配置,但效果非常好!