5

Ich verwende den folgenden Code, um das JWT-Zugriffstoken von einem Asp.net Web Api 2.2-Dienst zu verwenden. Ich habe this article gefolgt, um einen Autorisierungsserver in Web-API-Dienst einzurichten. Ich verwende RestSharp im Client.Wie kann ich JWT-Zugriffstoken und Benutzeransprüche mithilfe von RestSharp verwenden?

Client-Code:

  var client = new RestClient(http://localhost:58030); 
      client.Timeout = 30000; 
      var request = new RestRequest(@"/Oauth/Token", Method.POST); 
      request.AddHeader("content-type", "application/x-www-form-urlencoded"); 
      request.AddHeader("grant_type", "password"); 
      request.AddHeader("username", "[email protected]"); 
      request.AddHeader("password", "[email protected]"); 
      IRestResponse response = client.Execute(request); 
      result = response.Content; 

Als Ergebnis folgende Fehler Ich erhalte:

{ 
    "error_description":"grant type not supported", 
    "error":"unsupported_grant_type" 
} 
  1. Warum ich diesen Fehler bin immer und wie kann ich dieses Problem beheben?
  2. Wie kann ich auf die Ansprüche wie den Benutzernamen im Client zugreifen?
  3. Oder wie kann ich Identity Model verwenden, um den Service zu nutzen?

Antwort

-1

Es ist eine alte Frage, und Sie haben wahrscheinlich eine Implementierung von jetzt aber FWIW hier ist die Lösung, die

var client = new RestClient("http://blahblah/"); 
var request = new RestRequest("/token", Method.POST); 
// all parameters need to go in body as string 
var encodedBody = string.Format("username={0}&password={1}&grant_type=password", model.Username, model.Password); 
request.AddParameter("application/x-www-form-urlencoded", encodedBody, ParameterType.RequestBody); 
request.AddParameter("Content-Type", "application/x-www-form-urlencoded", ParameterType.HttpHeader); 
var response = client.Execute(request); 
1

Sie für mich gearbeitet hinzugefügt grant_type, username und password zum Header der HTTP-Anforderung, Es sollte in Body Teil sein.

Verwandte Themen