Azure AD Go SDK 守护程序应用程序列表用户返回“访问令牌丢失或格式错误”

我正在尝试通过图形 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包处理。


有只小跳蛙
浏览 120回答 2
2回答

慕尼黑的夜晚无繁华

似乎 sdk 在后端使用 azure ad graph api 但不是 microsoft graph api。Azure AD 图形 api 显示如下:https://graph.windows.net/{tenant_id}/users?api-version=1.6Microsoft 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们

尽管 MSAL 尚未准备好(在 SDK 中),但似乎 ADAL 已被弃用。天蓝色控制台:microsoft-authentication-library-for-go: 
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go