如何跨不同的Web应用程序实例共享Azure移动服务令牌

时间:2017-01-31 05:35:16

标签: azure azure-mobile-services access-token

我计划拥有多个azure移动服务实例,因此我的第一个要求是跨不同的应用实例共享经过身份验证的用户的访问令牌。我发现这篇文章https://cgillum.tech/2016/03/07/app-service-token-store/指出,现在我们无法共享令牌,因为它本地存储在计算机上,并且不建议将它放到blob存储中用于生产应用程序。我现在有什么可能的解决方案?

1 个答案:

答案 0 :(得分:0)

我已阅读您提到的有关App Service Token Store的blog。如上所述,令牌生活在哪里:

  

在内部,所有这些令牌都存储在应用程序的本地文件存储中 D:/home/data/.auth/tokens 下。令牌本身都使用特定于应用程序的加密密钥在用户特定的.json文件中加密,并按照最佳实践进行加密签名。

  

我发现这篇文章https://cgillum.tech/2016/03/07/app-service-token-store/表明我们现在无法共享令牌,因为它存储在本地机器上。

正如Azure-runtime-environment所述,Azure Web App可以处理的持久文件

  

它们植根于d:\ home ,也可以使用%HOME%环境变量找到。

     

这些文件是持久的,这意味着您可以依赖它们,直到您做某些事情来改变它们。此外,它们在您网站的所有实例之间共享(当您将其扩展到多个实例时)。在内部,它的工作方式是它们存储在Azure存储中而不是存在于本地文件系统中。

此外,Azure应用服务将启用 ARR Affinity 以使客户端后续请求与同一实例通信。您可以禁用会话关联cookie,然后将请求分布在所有实例中。有关详细信息,请参阅此blog

此外,我尝试停用 ARR Affinity 并将我的移动服务扩展到多个实例,然后我总是可以浏览https://[my-website].azurewebsites.net/.auth/me来检索有关当前登录用户的信息。< / p>

根据我的理解,您可以自己完成身份验证/授权,以在您的应用中使用auth中间件。但是,这需要做更多的工作。由于平台会为您处理,我认为您可以利用Easy Auth和令牌存储,并将您的移动服务扩展到多个实例,而无需担心任何事情。