我在Azure blob容器中有多个json文件,其中包含用户配置文件信息,并且我有一个Angular应用程序,该应用程序调用Azure blob容器并提取所有这些json文件。每个json文件都有其自己的网址,例如https:// {accountName} / profiles / {filename}。我是在缓存这些URL,而不是在每次刷新时都生成每个URL。现在的问题是容器数据具有公共访问级别,并且拥有此URL的任何人都可以访问文件。
一种方法是使用SAS(共享访问签名)令牌,并在特定时间间隔后使url失效,但是在我的情况下,这将对性能产生巨大影响。因为我必须一次又一次地为所有文件生成令牌。而且我也无法在Angular应用程序中公开秘密访问密钥,因此我必须编写一个可以完成此工作的api。
还有其他方法吗?我的Angular应用已部署为kubernetes集群(AKS)上的docker容器]
我找到了此链接https://docs.microsoft.com/en-us/rest/api/storageservices/authorize-requests-to-azure-storage,但对我来说似乎没有什么帮助。
如果要限制访问Blob存储的用途,则可以将Azure AD与角度应用程序集成。用户完成Azure AD身份验证后,他们将获得Azure AD访问令牌,然后可以使用带有访问令牌的调用Azure Blob rest api来获取Blob内容。但请注意,您需要记住一些事情
您需要为用户配置特殊的Azure RABC角色。角色为存储Blob数据所有者,存储Blob数据贡献者或存储Blob数据读取器。
您需要为Azure存储帐户配置CORS。
有关更多详细信息,请参阅