microsoft azure站点上所有与客户端应用程序或访问azure apis的服务主体有关的示例都显示了图形apis作为示例。我得到了这些工作,但我需要做的是访问azure服务管理apis。
如果我使用一个适用于图形api的身份验证令牌,并将其用于服务管理api,则会得到一个“身份验证失败”。错误。
我已经为我的公共客户端app添加了"azure服务管理“和user_impersonation委托权限类型的接口权限,但是管理api仍然失败。
我说的全错了吗?我的想法是,服务管理apis是以不同的方式进行身份验证的,因为在任何身份验证示例中都没有提到在任何地方使用它们。
发布于 2020-02-07 12:43:30
我假设您正在使用客户端应用程序或服务主体来访问azure资源。如果是,则您使用的是client credential flow,但是Azure Service Management接口的user_impersonation是delegated权限,在该流程中不生效。
权限用于由登录到AD应用程序的用户同意,例如,在auth code flow中,当用户同意时,应用程序将能够代表用户访问azure资源,请注意权限来自用户,而不是应用程序。因此,如果要使用此流程,用户应该在订阅或特定资源中具有角色。
要使用客户端应用程序或服务主体访问azure资源,您只需将服务主体作为RBAC角色添加到您的订阅或特定资源的Access control (IAM)中,无需在Azure AD中添加任何API权限,请参阅此link。然后服务主体将能够访问azure资源。
当你获取令牌来访问azure资源时,例如调用REST,作用域应该是https://management.azure.com/.default,而不是https://graph.microsoft.com/.default,你可以一次只获取一个资源的令牌。
https://stackoverflow.com/questions/60101216
复制相似问题