2017-02-13 20 views
1

Если у меня есть метод, который отправляет некоторые данные в конечную точку, я понимаю, что я должен использовать токен-носитель для аутентификации этого вызова, отправленного в заголовке запроса.Отправка токена-носителя на конечную точку, затем подтверждение этого токена

Say мой метод, который отправляет/принимает данные в/из конечной точки выглядит следующим образом:

public async Task<string> PostGetAsync() 
     { 
      var uri = new Uri("https://localhost:44322/endpoint"); 

      using (var client = new HttpClient()) 
      { 
       var pairs = new List<KeyValuePair<string, string>> 
       { 
        new KeyValuePair<string, string>("Key", "Value") 
       }; 

       var content = new FormUrlEncodedContent(pairs); 
       var response = await client.PostAsync(uri, content); 

       if (response.StatusCode != HttpStatusCode.OK) 
       { 
        return "Error posting KeyValue"; 
       } 

       string responseString = response.Content.ReadAsStringAsync().Result; 

       JArray json = JArray.Parse(responseString); 

       try 
       { 
        var returnedJson = json[returnedData]; 
        return returnedJson.ToString(); 
       } 
       catch (Exception e) 
       { 
        return "Index is out of bounds"; 
       } 
      } 
     } 

И метод, который работает, когда эта конечная точка называется это так:

public async Task<JsonResult> endpoint() 
     { 
      List<Example> items = new List<Example>(); 

      NameValueCollection nvc = Request.Form; 
      string keyString = nvc["Key"]; 

      try 
      { 
       items = await GetService.GetList(keyString); 
      } 
      catch (ServiceException se) 
      { 

      } 

      return Json(items, JsonRequestBehavior.AllowGet); 
     } 

Как I:

  • Отправлять токен-носитель (изготовленный на заказ в лазурном ключевом замке) до конечной точки.
  • Validate этот маркер от конечной точки

Я не могу найти начинающий дружественные документы для этого.

ответ

1

Отправка маркера-носителя так же просто, как добавление заголовка HTTP к запросу формы: Authorization: Bearer YOURTOKEN. Вы можете сделать это в C#, как так:

using (var client = new HttpClient()) 
    { 
    httpClient.DefaultRequestHeaders.Authorization = 
     new AuthenticationHeaderValue("Bearer", yourTokenString); 
    // .. rest of your code 

Для конечной точки сервера, вы были довольно неясно, как вы хотите, чтобы проверить маркер. Вы упоминаете Azure KeyVault, но не говорите, для чего вы его используете.

Обычно сервер проверяет входящие токены, проверяя их подпись. Эта проверка требует знать секрет. Azure KeyVault - это место, где вы можете хранить этот секрет.

Обычно вы настраиваете инфраструктуру сервера с проверкой маркера один раз (вместо конечной точки). Затем вы указываете, какие конечные точки требуют проверки маркера.

Существует целый ряд руководств, которые охватывают весь процесс. Вот пара:

https://blogs.msdn.microsoft.com/webdev/2016/10/27/bearer-token-authentication-in-asp-net-core/ https://goblincoding.com/2016/07/03/issuing-and-authenticating-jwt-tokens-in-asp-net-core-webapi-part-i/

Если этого не достаточно, то вы должны размещать более подробную информацию о вашем прецеденте и то, что вы знаете.