我正在尝试通过图形 API Go SDK 检索用户详细信息。我有一个守护程序应用程序,它已设置有足够的权限,我已通过curl如下所示验证:获取令牌curl \ -X POST \ -H "Content-Type: application/x-www-form-urlencoded" \ --data 'client_id={client_id}&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&client_secret={client_secret}&grant_type=client_credentials' \https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token要求curl -X GET \ -H "Authorization: Bearer XYZ...." \"https://graph.microsoft.com/v1.0/users"我成功获得了用户列表。但是,当我通过 Go SDK 尝试此操作时,它失败了。我已经按照https://github.com/Azure/azure-sdk-for-go#more-authentication-details设置了身份验证所需的环境变量:- `AZURE_TENANT_ID`: Specifies the Tenant to which to authenticate.- `AZURE_CLIENT_ID`: Specifies the app client ID to use.- `AZURE_CLIENT_SECRET`: Specifies the app secret to use代码func main() { authorizer, err := auth.NewAuthorizerFromEnvironment() if err != nil { fmt.Println(err) } client := graphrbac.NewUsersClient(os.Getenv("AZURE_TENANT_ID")) client.Authorizer = authorizer if _, err := client.List(context.Background(), "", ""); err != nil { fmt.Println("list users", err) }}错误list users graphrbac.UsersClient#List: Failure responding to request: StatusCode=401 -- Original Error: autorest/azure: Service returned an error. Status=401 Code="Unknown" Message="Unknown service error" Details=[{"odata.error":{"code":"Authentication_MissingOrMalformed","message":{"lang":"en","value":"Access Token missing or malformed."}}}]这里给我的文档建议身份验证和令牌由auth包处理。
2 回答
慕尼黑的夜晚无繁华
TA贡献1864条经验 获得超6个赞
似乎 sdk 在后端使用 azure ad graph api 但不是 microsoft graph api。
Azure AD 图形 api 显示如下:https://graph.windows.net/{tenant_id}/users?api-version=1.6
Microsoft graph api 显示如下:https://graph.microsoft.com/v1.0/users
因此,您需要为您的 azure ad 中注册的应用程序添加 azure ad graph 权限,而不是添加 microsoft graph 权限。请按照以下步骤添加权限:
1.在您的 azure 广告中转到您的应用程序,然后单击“API 权限”-->“添加权限”-->“Azure Active Directory Graph”。
2.添加“目录”权限。
3.不要忘记授予管理员同意。
MM们
TA贡献1886条经验 获得超2个赞
- 2 回答
- 0 关注
- 118 浏览
添加回答
举报
0/150
提交
取消