Microsoft Graph API-客户端凭据授予流程

时间:2018-06-19 20:34:01

标签: azure-active-directory microsoft-graph

我正在使用“客户端凭据授予流”来实现Microsoft Graph API,如https://developer.microsoft.com/en-us/graph/docs/concepts/auth_v2_service所述。此外,该应用程序已在https://apps.dev.microsoft.com/上注册。

此处的目的是允许我们的Web应用程序执行操作,例如检查用户的日历并代表他们发送邮件,而无需每个用户进行身份验证和授予对应用程序的访问权限。这样做的目的是使其对他们透明。

所以我想我已经开始工作了,但是想澄清一些事情。

  • 一旦获得管理员同意,如果应用程序的权限不变,是否需要再次进行?
  • 请求访问令牌时,它似乎在一小时内到期。有没有办法使它更长?否则,典型的工作流程是什么样的以确保令牌没有过期?每次应用程序发出API请求以确保令牌有效时,我是否应该请求令牌?还是存储令牌,但是要在令牌过期之前得到一个新令牌?

1 个答案:

答案 0 :(得分:1)

“管理员同意书”仅对授予同意时注册的权限提供同意。因此,是的,如果您更改权限,则 还需要在您的应用程序接收新作用域之前重复“管理员同意”。

根据设计,访问令牌只能生存很短的时间。您不应该在每次请求时都请求一个新令牌,因为这会增加不必要的开销。相反,您应该仅在新令牌过期后才请求它。

包含您的令牌的AAD响应也将提供到期时间:

{
  "access_token": "eyJ0eXAiOiJKV1QiLCJ...",
  "expires_in": 3599,
  "token_type": "Bearer",
  "scope": "https://graph.microsoft.com/mail.read https://graph.microsoft.com/user.read",
}

您可以将令牌响应与对象创建的时间混合在一起。在调用图表之前,您需要检查到期时间,以确定您的应用是否需要提前刷新令牌。