Azure AD / Microsoft Graph Tokens - 用于多客户端应用程序的内容

时间:2018-04-06 01:08:45

标签: oauth-2.0 azure-active-directory openid microsoft-graph

我需要能够通过后端在离线模式下监控用户的Hotmail或Outlook帐户。但是,用户可以从网络应用程序注册和授权帐户访问,例如Laravel或Lumen或来自Cordova移动应用程序或其他SPA接口,如Angular。基本上,应用程序在https://apps.dev.microsoft.com上配置为隐式流。

由于应用程序需要后端脱机处理,所以每天说几次 - 我需要刷新令牌才能更新access_token。有两种方法可以获得Azure AD的同意。

  1. authorize = id_token + token(但限制是id_token仅限于客户端)。当客户端运行且用户在线时,此方法更适合于提取电子邮件。

  2. authorize = code然后生成access_token和refresh_token。

  3. 问题 - 选项2是否适用于hotmail / outlook.com和O365?如果访问和刷新令牌是由客户端生成的 - 它们是否适用于用户帐户和电子邮件的在线和离线访问。

1 个答案:

答案 0 :(得分:3)

当然可以。但是,如果您想在令牌响应中接收刷新令牌,您的应用必须请求offline_acesss scope

  

offline_access scope代表您的应用访问资源   用户的延长时间。在工作帐户同意页面上,   此范围显示为“随时访问您的数据”权限。上   个人Microsoft帐户同意页面,它显示为“访问权限”   您的信息随时“权限。当用户批准offline_access时   范围,您的应用程序可以从v2.0令牌接收刷新令牌   端点。刷新令牌是长寿的。您的应用可以获得新的访问权限   旧版的代币到期。

请求示例:

//只有易读性的换行符

https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?
client_id=6731de76-14a6-49ae-97bc-6eba6914391e
&response_type=code
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
&response_mode=query
&scope=openid%20offline_access%20https%3A%2F%2Fgraph.microsoft.com%2Fmail.read
&state=12345

实际上,如果您使用代码授予流程来登录AAD,您将看到此页面:

enter image description here

如果您点击是,则表示您同意offline_access范围。注意:这适用于MSA和AAD帐户。

您可以在this documentation中查看有关offline_access sope的更多详细信息。