在Azure AD中使用Bearer Token刷新

时间:2016-02-21 15:07:48

标签: oauth-2.0 azure-active-directory bearer-token

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

所以流程是

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

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

1 个答案:

答案 0 :(得分:2)

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

使用你的符号,你会有

let point = tableView.convertPoint(CGPoint.zero, fromView: sender)

    guard let indexPath = tableView.indexPathForRowAtPoint(point) else {
        fatalError("can't find point in tableView")
    }

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