缺少用于异步处理的刷新令牌

时间:2016-05-24 12:37:35

标签: azure oauth-2.0 azure-active-directory adal

我们正在开发一个与OneDrive for Business(ODFB)之间传输文件的应用程序。 UI是使用Azure Active Directory进行身份验证的Web应用程序,实际处理由WebJob异步完成:

客户端(一个AAD应用程序):
[JavaScript应用]
服务器端(另一个AAD应用程序):
[Web API]<> [队列]<> [WebJob]

Web API从客户端应用程序接收文件传输请求。请求被放入队列中,并由WebJob异步处理。

为此,WebJob必须能够代表用户访问ODFB,即;在向/从ODFB上载/下载文件时使用承载令牌。我们目前正在使用OneDrive for Business API(https:// {tenant} -my.sharepoint.com/_api/v2.0)。

之前我们保存了刷新令牌(在服务器AAD应用程序的客户端上发布)以及传输请求 - 这样WebJob就可以通过调用来兑换刷新令牌以获取ODFB访问令牌。查看this链接 您可能已经注意到,客户端坐标是客户端应用程序 - 而不是服务器应用程序!这显然是错误的,但这是我们使其发挥作用的唯一方式。

我们当然不满意使用刷新令牌 - 但我们无法找到任何其他方法来使其工作。自从我们升级到ADAL 3.10后,由于缺少刷新令牌,一切都停止了工作: - )

所以最大的问题是:我们如何重构解决方案以启用WebJob的异步处理?

任何指针都会非常感激。提前谢谢!

1 个答案:

答案 0 :(得分:0)

  

自从我们升级到ADAL 3.10后,一切都停止了   丢失的刷新令牌: - )

这是预期的行为,因为AD团队从ADAL版本3.x中删除了Refresh Token。请阅读Vittorio的博客文章:http://www.cloudidentity.com/blog/2015/08/13/adal-3-didnt-return-refresh-tokens-for-5-months-and-nobody-noticed/

我建议从代码中取出对刷新令牌的依赖将是向前推进的最佳方式。