【问题标题】:How to create Virtual Network in Azure using GoLang API?如何使用 GoLang API 在 Azure 中创建虚拟网络?
【发布时间】:2017-01-26 02:25:34
【问题描述】:

目前我正在尝试使用 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 -- 原始错误:长时间运行的操作以状态“失败”终止:Code="AuthenticationFailed" Message="身份验证失败。缺少“授权”标头。"

我们将非常感谢您的帮助。

【问题讨论】:

    标签: azure go azure-virtual-network


    【解决方案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)
    

    【讨论】:

    • 谢谢@MarStr。当我在做这个工作时,Golang 的 Azure API 非常不稳定。我改用 REST API。感谢您的帮助:)
    【解决方案2】:

    我假设您使用 GoLang SDK for Azure ?错误的原因是当您发出请求时,它没有 Authorization 标头。授权标头是您可以从 Azure Active Directory 获取的 JSON Web Token

    1) 在 Fiddler 中查看请求,看看你的请求是否对齐with the rules

    2) 阅读有关如何获取令牌的教程(12)。

    【讨论】:

    • 设置标题时出错。你能分享一个设置标题的例子吗?
    • 在 GoLang 中 - 不,抱歉 :-) 什么错误?要设置标头,您应该遵循符号 - request.Headers.Add(HttpRequestHeader.Authorization, "Bearer " + token); “授权:承载 mF_9.B5f-4.1JqM”。该令牌应该从后端接收(请参阅我提供的第三个链接中的 GetAcessToken 方法)。
    • 请求响应失败:StatusCode=404 -- 原始错误:autorest/azure:错误响应无法解析:“”错误
    • 呃...很难说。您可以为该请求进行 Fiddler 会话吗?看起来请求格式不正确,甚至找不到服务器。
    • 感谢您的宝贵时间。非常感谢您的回复。
    猜你喜欢
    • 2021-05-15
    • 1970-01-01
    • 2021-07-08
    • 1970-01-01
    • 2016-04-11
    • 2017-12-09
    • 1970-01-01
    • 2017-09-21
    • 1970-01-01
    相关资源
    最近更新 更多