【问题标题】:Testing an Azure Hybrid Connection using SoapUI使用 SoapUI 测试 Azure 混合连接
【发布时间】:2019-07-26 18:49:13
【问题描述】:

我有一个 Azure 混合连接,它应该连接到一些本地服务并将其公开给我的应用服务。但是,设置在某个地方失败了,我正在尝试缩小问题的确切范围。

作为此过程的一部分(并且因为它将来对我有用)我正在尝试使用 SoapUI 调用底层的本地服务,但最初的 GET 请求应该给我WSDL 反而给了我一个身份验证错误:

GET https://my-relay.servicebus.windows.net/my-endpoint/my-service.svc?wsdl

{
  "error": {
    "code": "TokenMissingOrInvalid",
    "message": "MissingToken: Relay security token is required. TrackingId:b58c004c-e0e6-4dd0-a233-e0d304795e4e_G21, SystemTracker:my-relay.servicebus.windows.net:my-endpoint/my-service.svc, Timestamp:2019-03-05T10:17:26"
  }
}

我从哪里获得 Relay 安全令牌,以及如何告诉 SoapUI?

【问题讨论】:

    标签: azure soapui azure-hybrid-connections


    【解决方案1】:

    本指南可能会为您提供所需的答案。

    https://www.soapui.org/soap-and-wsdl/authenticating-soap-requests.html
    

    我怀疑您的普通应用程序会以当前系统上的当前用户身份自动访问网络服务。如果是这样,我相信你应该看看 NTLM 身份验证。

    【讨论】:

      【解决方案2】:

      您需要创建一个安全令牌并将其传递到您的请求标头中。

      类似这样的:

       var tokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider(KeyName, Key);
              var uri = new Uri(string.Format("https://{0}/{1}", RelayNamespace, ConnectionName));
              var token = (await tokenProvider.GetTokenAsync(uri.AbsoluteUri, TimeSpan.FromHours(1))).TokenString;
              var client = new HttpClient();
              var request = new HttpRequestMessage()
              {
                  RequestUri = uri,
                  Method = HttpMethod.Get,
              };
              request.Headers.Add("ServiceBusAuthorization", token);
              var response = await client.SendAsync(request);
      

      对于 SOAPUI,您可以将生成的令牌值添加到名为“ServiceBusAuthorization”的标头中。

      【讨论】:

        猜你喜欢
        • 2021-12-17
        • 1970-01-01
        • 1970-01-01
        • 2019-01-31
        • 2019-05-05
        • 2018-04-13
        • 2022-08-02
        • 1970-01-01
        • 2019-04-29
        相关资源
        最近更新 更多