0
|
Sebastian Zolg · 技术社区 · 6 年前 |
![]() |
1
1
如果要对存储使用基于azure active directory的访问控制,则需要获取访问令牌。这些步骤供您参考。
2。
Assign a build-in RBAC role to this application
这取决于要分配给应用程序的角色。
三。
Get the access token
.
4、使用Access令牌,现在您可以调用存储REST API。
|
![]() |
2
1
同时 this answer 技术上是正确的,这不是对我最初问题的直接回答。 我正在寻找一种方法来向业务用户提供任何BLB的直接URI,因此他们可以在任何Web浏览器中简单地打开它,并查看该文件。 在我的例子中,我们希望允许用户通过我们的支持bot(构建在Microsoft bot框架上)访问已上载到blob存储的文件。例如,将附件作为支持系统中的链接,供支持代理访问。 在深入研究这个问题之后,我可以回答我自己的问题:
不
,这是不可能的。更具体地说,仅仅在浏览器中打开指向blob的直接uri并不会触发oauth流。相反,它总是会给你
解决方案
为了找到一种方法来准确地存档我想要的内容,我想出了一个azure函数的想法,通过传递
考虑到安全性和访问令牌的需要,您可以通过平台身份验证(也称为easyauth)来保护Function应用程序。 然而 ,这还不够,而且配置解决方案的所有部分也不是一帆风顺的。这就是我分享的原因。 tl;dr高级步骤:
有关azure存储api权限和访问令牌的说明(步骤5&6)
如最新声明
documentation
对于azure存储上的aad身份验证支持,应用程序必须
因此,唯一的方法是通过在Azure门户中直接编辑应用程序注册清单来设置它的全局GUID(可以在Internet上找到)。 更新 : 事实证明,在门户中找不到正确的权限是一个错误。看我的答案 here . 手动修改清单也会得到同样的结果,但是直接在门户中进行修改要方便得多。
第一个是
在您上传了修改后的清单之后,您可以在 API权限 你的应用注册标签。
由于easyauth正在使用aad的v1端点,因此您的应用程序需要通过传递
此外,azure存储需要认证头的承载模式,因此需要jwt令牌。要从端点获取jwt令牌,我们需要传递
两者只能通过 Azure Resource explorer 或者动力地狱。
使用azure资源管理器,您必须一直导航到功能应用程序上的authsettings并设置
代码样本 下面是一个使用上述所有机制的简单azure函数的完整代码示例。
|
![]() |
AskMe · 无法读取存储帐户和密钥-Azure 7 年前 |
![]() |
Salman Lone · 持久任务框架对失败的任务重新排队 7 年前 |
|
Gorsky · 在azure存储中归档大文件的方法 7 年前 |
![]() |
BennyM · 用于操纵Azure blob容器的共享访问签名 7 年前 |
![]() |
ssk3 · Azure租赁Blob API 403错误 7 年前 |