【发布时间】:2018-04-15 01:27:50
【问题描述】:
我有以下设置:
- 网络应用(Jetty/Java)
- 本机客户端 (iOS)(调用我的 webapp)
- Microsoft Graph API(从我的网络应用调用)
这个想法是用户应该使用他/她的 Office 365 凭据通过 OpenID/Oauth2 登录。然后,Web 应用将代表用户调用 Microsoft Graph API(也可以离线)。
为了实现这一点,我很确定我需要使用授权类型:“授权码授权”。 我可以找到很多基于浏览器的应用程序的 Oauth2 流程示例,以及当本机应用程序直接调用 Graph API 时...... 但我希望我的后端调用 Graph API(并保持访问和刷新令牌).
所以问题是如何正确地做到这一点?这是我目前的想法。
从本机应用程序:打开浏览器,调用我的 Web 服务器,这将触发重定向到 Azure /authorize 端点(例如:https://login.microsoftonline.com/[tenant]/oauth2/v2.0/authorize?client_id=[clientid]&response_type=code&scope=offline_access%20user.read%20calendars.readwrite&response_mode=query&state=12345&redirect_uri=my-scheme://oath2-code-reply
这将触发身份验证/授权,然后将访问代码发送回应用程序(使用自定义方案重定向:my-scheme://oath2-code-reply)。
然后应用程序可以使用此访问代码调用我的网络应用程序,我们可以在其中交换代码以获取刷新和访问代码,还可以为用户创建我们自己的会话。
这是正确的方法吗?
或者整个流程应该发生在浏览器中,作为最后一步,我再次使用 myapp-scheme://?sessionid=[our-own-session] 之类的内容打开应用程序?
【问题讨论】:
标签: oauth-2.0 azure-active-directory adal