在 Azure AD 中使用不记名令牌刷新

Refresh with Bearer Token in Azure AD

我有一个将 Bearer 令牌传递给 Web API 应用程序的 Web 应用程序。然后该应用程序将报告排队 运行。根据队列的长度,可能需要 10 秒或一个多小时才能开始处理该报告。该报告需要访问也使用 Azure AD OAuth 保护的其他 REST 资源。

所以流量是

Web Client --- Bearer Token ---> Web API ---> Queue ---> Report Processor  ---> 
Token Acquired With Client Secret with UserAssertion ---> REST Data Source

由于原始 Bearer 令牌将在 60 分钟后过期,因此我需要能够在实际生成报告时刷新用户的 Bearer 令牌。我是否应该让 Web 客户端在请求 运行 报告时也传递实际的刷新令牌?

刷新令牌不应发送到正常刷新流程之外的任何地方。 我建议您在收到传入令牌后立即使用它来触发 onbehalfof flow(我假设您将其称为 UserAssertion 流)。这将为您的后端获得一个新的访问令牌和一个刷新令牌。刷新令牌持续 14 天:当您从队列中选择放入请求时,刷新令牌将允许您获取新的访问令牌。

使用你的符号,你会

Web Client --- Bearer Token ---> Web API ---> Token Acquired With Client Secret with UserAssertion ---> Queue ---> Report Processor  ---> 
Token Acquired With refresh token grant ---> REST Data Source

如果您无法在收到请求后和推送队列之前进行任何处理,则替代方法是使用应用程序权限 - 这将允许您随时为您的后端获取令牌。