Azure Graph 403 Authorization_RequestDenied 使用来自 VSTS 的服务主体
Azure Graph 403 Authorization_RequestDenied using service principal from VSTS
我有一个服务主体,VSTS 使用它来 运行 Azure Powershell 脚本。我要调用的命令是 Get-AzureRmRoleAssignment
。我收到以下错误消息
"Exception": {
"Request": {
"Method": "POST",
"RequestUri": "https://graph.windows.net/********/getObjectsByObjectIds?api-version=1.6",
"Properties": "System.Collections.Generic.Dictionary`2[System.String,System.Object]",
"Headers": "System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]"
},
"Response": {
"StatusCode": 403,
"ReasonPhrase": "Forbidden",
"Content": {
"odata.error": {
"code": "Authorization_RequestDenied",
"message": {
"lang": "en",
"value": "Insufficient privileges to complete the operation."
}
}
},
"Headers": "System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]"
}
}
我已验证服务主体具有角色分配的读取权限。
实际上,此 powershell 脚本 Get-AzureRmRoleAssignment
不仅需要 读取访问权限以使用 Azure REST API 权限 进行角色分配,还需要 使用 Azure AD Graph 读取目录数据权限 API.
我们可以用Fiddler找出这个命令调用了哪个API:
表示Get-AzureRmRoleAssignment
需要调用3APIs来完成操作。其中两个是 Azure REST API,其中一个是 Azure AD Graph API:
POST https://graph.windows.net/<tenantID>/getObjectsByObjectIds?api-version=1.6
解法:
所以,检查你的sp是否有读取目录数据的权限。(你最好在Application权限和Delegated权限都添加Read directory data
权限,然后点击Grant permissions按钮).这是我的测试结果:
希望对您有所帮助!
我有一个服务主体,VSTS 使用它来 运行 Azure Powershell 脚本。我要调用的命令是 Get-AzureRmRoleAssignment
。我收到以下错误消息
"Exception": {
"Request": {
"Method": "POST",
"RequestUri": "https://graph.windows.net/********/getObjectsByObjectIds?api-version=1.6",
"Properties": "System.Collections.Generic.Dictionary`2[System.String,System.Object]",
"Headers": "System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]"
},
"Response": {
"StatusCode": 403,
"ReasonPhrase": "Forbidden",
"Content": {
"odata.error": {
"code": "Authorization_RequestDenied",
"message": {
"lang": "en",
"value": "Insufficient privileges to complete the operation."
}
}
},
"Headers": "System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]"
}
}
我已验证服务主体具有角色分配的读取权限。
实际上,此 powershell 脚本 Get-AzureRmRoleAssignment
不仅需要 读取访问权限以使用 Azure REST API 权限 进行角色分配,还需要 使用 Azure AD Graph 读取目录数据权限 API.
我们可以用Fiddler找出这个命令调用了哪个API:
表示Get-AzureRmRoleAssignment
需要调用3APIs来完成操作。其中两个是 Azure REST API,其中一个是 Azure AD Graph API:
POST https://graph.windows.net/<tenantID>/getObjectsByObjectIds?api-version=1.6
解法:
所以,检查你的sp是否有读取目录数据的权限。(你最好在Application权限和Delegated权限都添加Read directory data
权限,然后点击Grant permissions按钮).这是我的测试结果:
希望对您有所帮助!