1

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

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

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?

4

2 回答 2

0

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

像这样的东西:

 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”的标头中添加生成的令牌值。

于 2019-04-03T18:28:09.400 回答
0

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

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

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

于 2019-03-05T16:13:37.540 回答