[英]Permissions for Azure database management
我正在开发一个小型应用程序,以连接到Microsoft Azure,列出属于某个资源组的所有数据库,并导出所有所述数据库。 我为此使用Microsoft.WindowsAzure.Management.Sql库。
遵循本指南 ,我设法在AD中为我的应用程序设置了应用程序注册,并为其分配了Owner
角色(用于测试),向Azure进行身份验证并获得了访问令牌。
但是,当我尝试使用该令牌对数据库执行任何操作(例如,使用IServerOperations.List列出所有数据库)时,出现以下异常:
ForbiddenError: The server failed to authenticate the request. Verify that the certificate is valid and is associated with this subscription.
租户ID,订阅ID,客户ID和客户机密都是正确的,更改它们中的任何一个都会导致不同的异常,这已经在身份验证阶段。
我怎样才能解决这个问题? 如果正确的答案是“切换到Microsoft.Azure.Management.Sql ”,那么我很好,但是如果可能的话,我至少想了解为什么会这样。
如果正确的答案是“切换到Microsoft.Azure.Management.Sql”,我对此表示完全满意,但如果可能的话,我至少想了解为什么会这样。
Microsoft.WindowsAzure.Management.Sql
实现ASM API(Azure旧API)。
出现此错误的原因是,您试图使用应用程序权限对Azure资源管理器(ASM)API进行身份验证/授权。 但是Service Management API是委派权限,而不是应用程序权限。
有关如何对ASM和ARM Rest API进行身份验证的更多详细信息,请参考另一个SO线程 。
我怎样才能解决这个问题?
Microsoft.Azure.Management.Sql
实现ARM API。 如前所述,您可以使用Microsoft.Azure.Management.Sql
来理解Microsoft.WindowsAzure.Management.Sql
或者您可以使用基于X509证书的授权来授权您的ASM API请求。 有关如何使用管理证书进行身份验证的更多信息,请参考本教程 。
注意 :建议使用Microsoft.Azure.Management.Sql
代替Microsoft.WindowsAzure.Management.Sql
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.