Я пытаюсь использовать Azure Golang SDK, чтобы вытащить список Azure пользователей AD.
Несколько замечаний: 1. Аутентификация прошла успешно. «Авторизация прошла успешно». отображается, когда я использую приведенный ниже код для получения токена на предъявителя для Azure SPN. Это в значительной степени ванильный код, выбранный из 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 функции для создания экземпляра 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.
Любая помощь приветствуется.