2017-02-13 1 views
1

Wenn ich eine Methode habe, die Daten an einen Endpunkt sendet, muss ich einen Bearer-Token verwenden, um diesen Anruf zu authentifizieren, der im Header der Anfrage gesendet wird.Senden eines Bearer-Tokens an einen Endpunkt, dann Validieren dieses Tokens

Say my Methode, die/zum/vom Endpunkt empfängt Daten sendet sieht wie folgt aus:

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"; 
       } 
      } 
     } 

Und die Methode, die ausgeführt wird, wenn dieser Endpunkt es diese aufgerufen wird:

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); 
     } 

Wie I:

  • Senden Sie ein Bearer-Token (benutzerdefinierte Speicherung in azure keyvault) an den Endpunkt.
  • Validate dieses Token vom Endpunkt

ich keine Anfänger freundlich docs, dies zu tun gibt.

Antwort

1

Das Senden eines Bearer-Tokens ist so einfach wie das Hinzufügen eines HTTP-Headers zur Anforderung des Formulars: Authorization: Bearer YOURTOKEN. Sie können wie so es in C# tun:

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

Für den Server-Endpunkt, Sie waren ziemlich unklar, wie Sie das Token validieren möchten. Sie erwähnen Azure KeyVault, aber sagen Sie nicht, wofür Sie es verwenden.

Normalerweise überprüft der Server eingehende Token, indem er deren Signatur überprüft. Diese Überprüfung erfordert ein Geheimnis zu kennen. In Azure KeyVault können Sie dieses Geheimnis speichern.

In der Regel konfigurieren Sie Ihr Server-Framework einmal mit der Token-Verifizierung (anstelle des Endpunkts). Sie geben dann nur an, für welche Endpunkte eine Token-Verifizierung erforderlich ist.

Es gibt eine Reihe von Anleitungen, die den gesamten Prozess durchlaufen. Hier sind ein paar:

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/

Wenn dies nicht ausreicht, dann sollten Sie genauere Informationen über Ihre Benutzung Fall posten und was Sie wissen.

Verwandte Themen