【问题标题】:how to share Azure mobile service tokens across different web app instances如何在不同的 Web 应用程序实例之间共享 Azure 移动服务令牌
【发布时间】:2017-06-16 11:06:38
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    我已阅读您提到的有关应用服务令牌商店的blog。如前所述令牌所在的位置:

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

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

    正如Azure-runtime-environment 所说,Azure Web 应用可以处理的持久文件

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

    这些文件是持久的,这意味着您可以依赖它们一直保留在那里,直到您对它们进行更改。此外,它们在您网站的所有实例之间共享(当您将其扩展到多个实例时)。在内部,其工作方式是将它们存储在 Azure 存储中,而不是位于本地文件系统中。

    此外,Azure 应用服务将启用 ARR Affinity 以保持客户端后续请求与同一实例通信。您可以禁用会话关联 cookie,然后请求将分布在所有实例中。更多详情可以参考这个blog

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

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

    【讨论】:

    • 谢谢布鲁斯,在上面的问题中,我提到了多个实例,我的意思是跨不同区域的多个 azure 移动服务实例,例如一个在亚洲,一个在欧洲,另一个在美国,并使用 azure 流量管理器将请求定向到最近的实例,因此如果来自印度的用户尝试调用我的 api 并且它被重定向到欧洲实例(例如,当我更新时亚洲地区的服务器),因为它的token本地存储在亚洲服务器上,当请求到欧洲服务器时,它会拒绝请求
    • 根据您的最新情况,如果您担心更新服务器时无法访问实例,您可以利用deployment slot 设置开发环境并在暂存部署槽中验证应用程序更改之前将其与生产槽交换。
    • 或者您需要将您的身份验证服务构建到您的应用程序中,并将用户登录信息(例如提供程序,access_token 等)存储到共享存储中(例如Azure Redis Cache)以获得更高的性能.另外,你可以参考这个tutorial
    • Azure 存储对区域内的所有缩放单元都是通用的。因此,如果您有两个区域(一个在美国西部,一个在美国东部),那么您就有两个 Azure 存储帐户和两个令牌缓存。 ARR Affinity 将确保您的用户始终使用正确/相同的区域服务。
    • 感谢布鲁斯和阿德里安。我不认为它解决了我的问题。假设我首先在美国地区添加了我的应用程序,所以来自亚洲和欧洲的人仍将使用该应用程序,因此他们将连接到美国地区,并且一段时间后,如果我的用户群在亚洲和欧洲增长,我将部署应用程序到亚洲和欧洲地区,Azure 流量管理器会将他们转移到他们所在位置附近的应用程序,因为他们的令牌存储在我的美国地区机器上,他们会得到身份验证错误。我得到的是如果您使用的是 Azure 移动服务,如果我错了,请纠正我
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-19
    • 1970-01-01
    • 2018-02-15
    • 2018-10-23
    • 1970-01-01
    相关资源
    最近更新 更多