【问题标题】:Is it possible to get access token for Azure Blob Storage using OAuth - Client Credential Grant Type?是否可以使用 OAuth - 客户端凭据授予类型获取 Azure Blob 存储的访问令牌?
【发布时间】:2020-07-17 11:04:30
【问题描述】:

我正在为 Azure Blob 中的外部存储准备访问授权请求。我希望服务应用程序使用 OAuth 访问该存储,并且由于访问是由服务完成的(没有真正的用户执行服务),我想使用 Client Credential Grant type。我正在使用 Azure Active Directory 来管理用户和应用程序注册和权限,因此授权端点将是 Azure,它将授予我访问令牌。

我已将其他 OAuth 凭据访问用于其他服务,例如 Authorization Code Grant(在这种情况下我不能使用它,因为它需要用户手动登录)甚至 Resource Owner Password Credential Grant(不推荐,但我管理服务和存储都可以实现。不利的一面是,应用程序以用户身份登录,出于安全考虑,我不希望这样做。)

我已经关注Microsoft´s guide 试图实现这一目标,但仍然没有运气。按照指南在 Azure 中注册 API 时,我只能选择委派权限,而不是适合这些需求的应用程序权限,并附上几个截图。

App registration in Azure Active Directory window

App registration options

所以,总而言之,我正在尝试实现 客户端凭据类型,但我无法获得有效的令牌。是否可以使用这种类型获得授权?如果是的话,你能给我一个快速指南之类的吗?

谢谢

【问题讨论】:

  • 如果我的回答对您有帮助,您可以接受它作为答案(单击答案旁边的复选标记,将其从灰色切换为已填充。)。请参阅meta.stackexchange.com/questions/5234/… 可能对其他社区成员有益。谢谢

标签: oauth-2.0 azure-active-directory azure-blob-storage msal


【解决方案1】:

对于 Azure 存储,这可能与其他授权方法不同。您不能在 API 权限中直接将 Application 权限授予您的服务应用程序。这是因为您的应用程序没有 RBAC 角色。

如果您已准备好访问 Azure Blob 中外部存储的授权请求,请按照以下步骤操作here

Azure 门户>存储帐户>搜索并选择您的存储帐户>访问控制(IAM)>添加角色分配以将服务主体添加到您的存储帐户(这相当于您将application permissions 授予@中的服务应用程序987654327@)

然后我们使用client credential flow在postman中进行测试:

顺便说一下,你应该参考这个文档:here

【讨论】:

  • 已解决,我必须添加 2017-11-09 或更高版本才能获取。它在您添加的文档中指定
【解决方案2】:

您没有指定您的错误。如果它只是说拒绝访问,那么只需将服务主体添加到您尝试访问的 blob 或存储帐户的 rbac 角色。那么您的应用程序应该有权调用存储

【讨论】:

  • 抱歉,我无法获取令牌。在遵循整个指南之后,每当我尝试通过邮递员或通过代码使用MSAL libraries 而不是接收令牌时,我都会收到一个重定向到登录窗口的重定向。真正的问题是知道是否可以进行 Client Grant 身份验证?如果可能的话,怎么做?
猜你喜欢
  • 2015-04-16
  • 2020-11-18
  • 2020-03-17
  • 1970-01-01
  • 2019-12-03
  • 1970-01-01
  • 2019-01-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多