2016-04-22 2 views
0

В настоящее время я пытаюсь создать виртуальную сеть с использованием кода GoLang:Как создать виртуальную сеть в Azure с помощью API GoLang?

client := network.NewVirtualNetworksClient(subscriptionID) 
var parameters network.VirtualNetwork 
c := make(<-chan struct{}) 

c1, err := client.CreateOrUpdate(resourceGroupName, virtualNetworkName, parameters, c) 

utils.Info.Println(err.Error()) 
utils.Info.Println(c1) 

Но код не работает нормально. Он выдает следующее исключение:

Запрос на отправку отказа: StatusCode = 401 - Исходная ошибка: длительная работа завершена с статусом «Failed»: Код = «AuthenticationFailed» Message = «Ошибка аутентификации. Недопустимый заголовок« Авторизация » «.

Ваша помощь будет высоко оценена.

ответ

1

Предполагаете, вы используете GoLang SDK for Azure? Причиной ошибки является то, что когда вы делаете запрос, у него нет заголовка авторизации. Заголовок авторизации - это веб-токен JSON, который вы можете получить от Azure Active Directory.

1) Посмотрите запрос в Скрипалле и посмотрите, соответствует ли ваш запрос with the rules.

2) Пойдите с учебниками о том, как получить токен (1 и 2).

+0

я получаю сообщение об ошибке при установке заголовка. Можете ли вы поделиться примером установки заголовка? – Baber

+0

В GoLang - нет, извините :-) Какая ошибка? для установки заголовка вы должны следовать нотации - request.Headers.Add (HttpRequestHeader.Authorization, «Bearer» + токен); Msgstr "Авторизация: Носитель mF_9.B5f-4.1JqM". Этот токен должен быть получен из бэкэнд (см. Метод GetAcessToken в третьей предоставленной ссылке). –

+0

Я получаю следующую ошибку: – Baber

1

Существует некоторая хорошая документация в целом для использования Azure аутентификации, который вы можете найти здесь: azure-sdk-for-node/Documentation/Authentication

В то время не является примером для виртуальных сетей пока конкретно, вы можете найти Azure SDK for Go samples here.

Для Go в частности, вы можете обновить клиент, чтобы использовать маркер аутентификации, так что ваш код будет выглядеть примерно так:

c := make(chan struct{}) 
authConfig, err0 := azure.PublicCloud.OAuthConfigForTenant(<yourTenantID>) 
token, err1 := azure.NewServicePrincipalToken(
        *authConfig, 
        <yourClientID>, 
        <yourClientSecret>, 
        azure.PublicCloud.ResourceManagerEndpoint) 

client := network.NewVirtualNetworkClient(subscriptionID) 
client.Authorizer = token 

var parameters network.VirtualNetwork 
c1, err2 := client.CreateOrUpdate(resourceGroupName, virtualNetworkName, parameters, c) 
+0

Thanks @MarStr. Когда я работал над этим, API Azure для Golang был очень нестабилен. Вместо этого я использовал REST API. Спасибо за вашу помощь :) – Baber

Смежные вопросы