【发布时间】:2018-12-31 22:19:21
【问题描述】:
我需要能够通过后端在离线模式下监控用户的 Hotmail 或 Outlook 帐户。但是用户可以通过网络应用程序注册并授权帐户访问,例如Laravel 或 Lumen 或来自 Cordova 移动应用程序或其他 SPA 界面,如 Angular。基本上,该应用程序在https://apps.dev.microsoft.com 上配置为隐式流。
由于该应用需要后端离线处理,因此可以说一天几次 - 我需要一个刷新令牌来更新 access_token。有两种方法可以从 Azure AD 获得同意。
authorize = id_token + token(但限制是 id_token 仅针对客户端)。这种方式更适合在客户端运行且用户在线时获取邮件。
authorize = 代码,然后生成 access_token 和 refresh_token。
问题 - 选项 2 是否适用于 hotmail/outlook.com 和 O365?如果访问和刷新令牌由客户端生成 - 它们是否适用于用户帐户和电子邮件的在线和离线访问。
【问题讨论】:
-
option2 不是隐式授权流程,而是代码授权流程。虽然您可以通过此流程获得刷新令牌,但您还需要用户先登录。获得刷新令牌后,您可以使用它。它适用于 MSA 和 AAD 帐户。
-
@WayneYang-MSFT - 需要用户先登录是什么意思?根据您的评论,它将是 - 用户从移动应用程序注册。生成代码。代码用于获取访问和刷新令牌。刷新令牌存储在服务器端,例如拉拉维尔。然后,刷新令牌可用于 Laravel 服务器进行静默调用以获取新的访问令牌,并将其用于从 Hotmail 和 O365 获取用户的电子邮件。在客户端,访问令牌存储在本地存储中,如果过期,可以通过从服务器/laravel 获取刷新令牌来刷新。对吗?
-
如果用户不发送退出请求,浏览器不会清除包含令牌信息的cookie。我不知道如果用户离线,您的用户是否会退出。如果他/她需要退出,cookie 将被清除。如果用户想要使用该应用程序,他/她需要重新登录。
-
是的 - 我知道如果用户注销,他们将不得不重新登录。但不要重新授权,因为他们已经授权了该应用程序。对于 cordova 应用程序,不会有 cookie。相反,可以从用户的帐户中读取访问令牌。我主要担心的是能否在客户端和服务器上使用相同的新令牌进行刷新,并且能够同时访问 Hotmail 和 O365。从这个角度来看,我们似乎很好。感谢您的帮助。
-
嗯.. 你的意思是要使用一个刷新令牌来为两个用户帐户获取两个访问令牌?
标签: oauth-2.0 azure-active-directory openid microsoft-graph-api