Использование гибридного подключения Azure для подключения к внутреннему веб-API

Очень новичок в Azure, и у меня есть внутренний веб-API на внутреннем адресе http://internal-server:182/api/policies. Я настроил гибридное соединение internal-service.servicebus.windows.net. Это подключено и работает.

Моя борьба заключается в том, чтобы заставить код C# работать для подключения и извлечения данных. Через несколько дней я просмотрел различные статьи, видео и т. д., и все они кажутся более продвинутыми, чем то, что я пытаюсь сделать, то есть просто вызвать веб-API и прочитать JSON. Я пытался упростить код, но получаю ошибку:

401 MalformedToken: Invalid authorization header: The request is missing WRAP authorization credentials. 

В настоящее время у меня есть следующий код:

using (var client = new HttpClient())
{
    var url = "http://internal-service.servicebus.windows.net";

    var tp = TokenProvider.CreateSharedAccessSignatureTokenProvider("RootManageSharedAccessKey", "<key goes here>");

    var token = tp.GetWebTokenAsync(url, string.Empty, true, TimeSpan.FromHours(1))
                .GetAwaiter()
                .GetResult();

    client.BaseAddress = new Uri(url);
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));


    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("ServiceBusAuthorization", token);

    var response = client.GetAsync("/api/policies").Result;
    string res = "";
    using (HttpContent content = response.Content)
    {
       // ... Read the string.
       Task<string> result = content.ReadAsStringAsync();
       res = result.Result;

       Label1.Text = res;
     }

}

Любая помощь или направление будут высоко оценены? Когда этот код заработает, веб-приложение будет опубликовано как веб-приложение Azure.


person Ian M    schedule 11.09.2018    source источник
comment
Возможный дубликат Microsoft Azure CreateQueue с использованием простого клиента REST   -  person Óscar Andreu    schedule 11.09.2018


Ответы (1)


Кажется, вы не отправляете правильный заголовок.

Первое предложение: перехватить вызов с помощью прокси-сервера, такого как fiddler, чтобы выполнить которые добавляют конфигурацию прокси к вашему вызову на локальный порт 8888, после этого вы можете попробовать какой-либо запрос и увидеть необработанный http, который вы отправляете на сервер, вы также можете изменить его, пока он не заработает, как только вы это измените свой код, пока он отправить тот же необработанный http.

Дополнительную информацию об этом можно найти здесь:
Microsoft Azure CreateQueue с помощью Simple Клиент REST
https://github.com/ytechie/event-hubs-sas-generator

person Óscar Andreu    schedule 11.09.2018
comment
Я не мог заставить это работать, казалось, что это излишество для того, чем я был после, поэтому в итоге использовал: прокси приложения Azure Active Directory - docs.microsoft.com/en-us/azure/active-directory/manage-apps/. - person Ian M; 13.09.2018