如何使用 RestSharp 使用 JWT 访问令牌和用户声明
How to consume JWT access token and user claims using RestSharp
我正在使用以下代码从 Asp.net Web Api 2.2 服务中使用 JWT 访问令牌。我已按照 this article 在 Web Api 服务中设置授权服务器。我在客户端使用 RestSharp。
客户代码:
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", "admin@example.com");
request.AddHeader("password", "Admin@456");
IRestResponse response = client.Execute(request);
result = response.Content;
因此我收到以下错误:
{
"error_description":"grant type not supported",
"error":"unsupported_grant_type"
}
- 为什么会出现此错误,我该如何解决?
- 如何访问客户端中的用户名等声明?
- 或者,我如何使用身份模型来使用服务?
这是一个老问题,您现在可能已经实现了,但是这里是对我有用的解决方案
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);
您在 http 请求的 Header
中添加了 grant_type
,username
和 password
,它应该在 Body
部分。
我正在使用以下代码从 Asp.net Web Api 2.2 服务中使用 JWT 访问令牌。我已按照 this article 在 Web Api 服务中设置授权服务器。我在客户端使用 RestSharp。
客户代码:
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", "admin@example.com");
request.AddHeader("password", "Admin@456");
IRestResponse response = client.Execute(request);
result = response.Content;
因此我收到以下错误:
{
"error_description":"grant type not supported",
"error":"unsupported_grant_type"
}
- 为什么会出现此错误,我该如何解决?
- 如何访问客户端中的用户名等声明?
- 或者,我如何使用身份模型来使用服务?
这是一个老问题,您现在可能已经实现了,但是这里是对我有用的解决方案
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);
您在 http 请求的 Header
中添加了 grant_type
,username
和 password
,它应该在 Body
部分。