gpt4 book ai didi

azure - 身份验证成功,但无法使用 Azure Golang SDK 检索和列出 Azure AD 用户

转载 作者:行者123 更新时间:2023-12-01 22:15:40 26 4
gpt4 key购买 nike

我正在尝试使用 Azure Golang SDK 来拉取 Azure AD 用户列表。

需要注意的几点:
1.认证成功。 “授权成功。”当我使用以下代码获取 Azure SPN 的不记名 token 时显示。
这几乎是从 Azure-Go-SDK 存储库中挑选出来的普通代码。

//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
}

周围定义了一个包装器GetGraphAuthorizer 实例化函数 用户客户端 目的:
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
}

然后我使用 token 在下面的函数中列出 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 中删除了上面的“委派”权限,只留下了应用程序权限,它继续工作!

关于azure - 身份验证成功,但无法使用 Azure Golang SDK 检索和列出 Azure AD 用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60433783/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com