身份验证成功,但无法使用Azure Golang SDK检索和列出Azure AD用户
我正在尝试使用Azure Golang SDK获取Azure广告用户列表 需要注意的几件事: 1.身份验证成功。“授权成功。”在我使用下面的代码获取Azure SPN的承载令牌时显示。 这几乎是从Azure Go SDK repo中挑选出来的普通代码身份验证成功,但无法使用Azure Golang SDK检索和列出Azure AD用户,azure,go,sdk,Azure,Go,Sdk,我正在尝试使用Azure Golang SDK获取Azure广告用户列表 需要注意的几件事: 1.身份验证成功。“授权成功。”在我使用下面的代码获取Azure SPN的承载令牌时显示。 这几乎是从Azure Go SDK repo中挑选出来的普通代码 //GetGraphAuthorizer gets an OAuthTokenAuthorizer for graphrbac API. func GetGraphAuthorizer(fs auth.FileSettings) (autores
//GetGraphAuthorizer gets an OAuthTokenAuthorizer for graphrbac API.
func GetGraphAuthorizer(fs auth.FileSettings) (autorest.Authorizer, error) {
if graphAuthorizer != nil {
return graphAuthorizer, nil
}
var a autorest.Authorizer
var err error
a, err = getAuthorizerForResource(grantType(), Environment().GraphEndpoint, fs)
if err == nil {
// cache
graphAuthorizer = a
fmt.Println("Authorization successful.")
} else {
graphAuthorizer = nil
fmt.Println ("Authorization failed.")
}
return graphAuthorizer, err
}
在AbroundGetGraphAuthorizer函数上定义了一个包装器,用于实例化userClient对象:
func getADUserClient(fs auth.FileSettings) graphrbac.UsersClient {
userClient := graphrbac.NewUsersClient(azure.GetTenantId(fs))
a, _ := azure.GetGraphAuthorizer(fs)
userClient.Authorizer = a
userClient.AddToUserAgent(azure.UserAgent())
return userClient
}
然后我使用令牌在下面的函数中列出Azure AD中的用户:
adUserClient := getADUserClient(fs)
// if auth failed, then it should've displayed the failure message here but prints "Authorization successful instead"
for list, err := adUserClient.ListComplete(context.Background(), ""); list.NotDone(); err = list.Next() {
if err != nil {
fmt.Print("got error while traversing User list: ", err)
}
i := list.Value()
fmt.Println(*i.DisplayName)
fmt.Println(*i.GivenName)
}
没有输出,什么都没有
仅供参考:-我在Azure租户中有用户。
我已授予SPN访问Graph API的权限
非常感谢您的帮助。不是100%确定,但出于某种原因,我不得不授予Azure SPN“委托”权限: Directory.ReadWrite.All Groups.ReadWrite.All 令人惊讶的是,一旦程序列出了用户,我就从SPN中删除了上面的“委托”权限,只保留了应用程序权限,它继续工作