Тратить Веб услугу RESTful в ASP.NET

У меня есть ситуация, я должен тратить Веб услугу RESTful с удостоверением OAuth2 и мое приложение разработано на ASP.NET.

Что я могу использовать, чтобы тратить эту услугу?: как я должен создавать клиент используя такие книжные магазины как OWIN или другие?

1
задан 09.03.2016, 22:52
2 ответа

Чтобы тратить услугу REST с .NET ты должен использовать класс HttpClient. В этой ссылке у тебя есть пример как использовать ее (код C# оно было бы чем-то как это)

using (var client = new HttpClient())
{
    client.BaseAddress = new Uri("http://localhost:9000/");
    client.DefaultRequestHeaders.Accept.Clear();
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

    // New code:
    HttpResponseMessage response = await client.GetAsync("api/products/1");
    if (response.IsSuccessStatusCode)
    {
        Product product = await response.Content.ReadAsAsync>Product>();
        Console.WriteLine("{0}\t${1}\t{2}", product.Name, product.Price, product.Category);
    }
}

Относительно удостоверения OAuth ты мог бы использовать книжный магазин AsyncOAuth и после, менять первую линию предыдущего кода, чтобы конфигурировать HttpClient так что я управлял об удостоверении с этим книжным магазином:

using (var client = new HttpClient(new OAuthMessageHandler(
    "consumerKey", 
    "consumerSecret", 
    new AccessToken("accessToken", "accessTokenSecret"))))
{
    ...
}

Согласно документации этого книжного магазина, также нужно помещать следующий код в Application_Start чтобы мочь реализовывать криптографические операции вычисления HASH

OAuthUtility.ComputeHash = (key, buffer) => { 
    using (var hmac = new HMACSHA1(key)) 
    { 
        return hmac.ComputeHash(buffer); 
    } 
};
1
ответ дан 24.11.2019, 14:55
  • 1
    Спасибо за твой ответ, я буду применять то, что они прокомментировали мне, и едва считайте последованным har и # 233; знать. –  04.02.2016, 22:41
  • 2
    @J.Guevara Довольный тем, что может помогать тебе. Конечно, и #191; откуда ты делаешь призыв к API? и #191; с клиент ? и #191; с сервер ? я это говорю, потому что мой ответ применяется к случаю, в котором вызов - с сервера. и #191; Quiz и # 225; s ты называешь в тебя собственная API в этом же самом aplicaci и # 243; n? В этом случае, @Leandro-Tuttini он комментирует это тебе в Вашем ответе и у тебя есть м и # 225; s детали в этот другой вопрос – rsciriano 04.02.2016, 23:22
  • 3
    С клиента, и большое спасибо из-за того, что он упоминал тему token, немного путалось с этой темой, я reci и # 233; n работая с этим adem и # 225; s, поскольку ты можешь видеть, я новый в сообществе. –  05.02.2016, 15:56
  • 4
    @j.guevara быть и # 237; в добро, которое должно издавать твой вопрос внося детали, которые осветляли бы эти темы для того, чтобы это был м и # 225; s и #250; til в оставшуюся часть пользователей. Привет – rsciriano 05.02.2016, 17:11

Если сервер выставляет услугу webapi помеченный с признаком [Authorize] первый шаг будет состоять в том, чтобы получать token, который позволит вводить информацию в компьютер в услуги.

Он рекомендовал бы дай ему взгляд этой статье

Гарантировать Веб API с индивидуальными счетами и начало Локального сеанса в ASP.NET Вебе API 2.2

Поскольку ты поймешь с webapi, выставляется endpoint как /Token он, в который ты должен реализовывать ее первый призванная получать token который ты должен посылать в остальные услуги, когда ты призовешь их

С asp.net ты мог бы работать двух форм

важно поскольку ты определяешь в header token

var headers = {};  
if (token) {  
    headers.Authorization = 'Bearer ' + token;  
}  

$.ajax({  
        type: 'GET',  
        url: '/api/values',  
        headers: headers  
}).done(function (data) {  
        self.result(data);  
}).fail(showError);   

Поскольку ты поймешь, требуют предварительного шага, чтобы получать token что ты допустит к услугам.

1
ответ дан 24.11.2019, 14:55
  • 1
    Леандро большое спасибо, и #191; Ты можешь показывать мне возможно, как получать token? этот token я представляю себя должен хранить это в DB и использовать это каждый раз, когда он завершает WS или я должен просить новый token каждый раз, когда он это сделал? –  04.02.2016, 21:28
  • 2
    @J.Guevara token ты это получаешь из-за средств, которые мы прокомментировали, призывая enpoint/token, который услуга webapi безопасный выставляет. Этот token ты был бы должен сохранять это в storage html, он не сохраняет ни в каком db, потому что у него есть время истечения, когда он побеждает, ты должен просить другой – Leandro Tuttini 04.02.2016, 21:37
  • 3
    Much и # 237; пропасти спасибо, я это буду работать и прокомментирую результат. Превосходные ответы Леандро. –  04.02.2016, 21:49