5

我正在使用以下代碼從Asp.net Web Api 2.2服務中使用JWT訪問令牌。我已按照this article在Web Api服務中設置授權服務器。我在客戶端使用RestSharp。如何使用RestSharp使用JWT訪問令牌和用戶聲明

客戶端代碼:

  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; 

結果我收到以下錯誤:

{ 
    "error_description":"grant type not supported", 
    "error":"unsupported_grant_type" 
} 
  1. 爲什麼我得到這個錯誤,我該如何解決這一問題?
  2. 如何在客戶端訪問諸如用戶名等索賠?
  3. 或者,我如何使用Identity Model來使用服務?

回答

-1

這是一個老問題,你可能通過,但現在這裏FWIW是爲我工作的解決方案有一個實現

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

你加入grant_typeusernamepassword HTTP請求的Header,它應該在Body部分。

相關問題