C# 使用外部令牌添加身份验证
我正在从外部api(其他应用程序)获取access_令牌,但我无法使用此令牌对我的api进行身份验证/授权,我正在获取令牌:C# 使用外部令牌添加身份验证,c#,asp.net-core,token,C#,Asp.net Core,Token,我正在从外部api(其他应用程序)获取access_令牌,但我无法使用此令牌对我的api进行身份验证/授权,我正在获取令牌: [HttpPost("/authorize/user")] public async Task<IActionResult> Post([FromBody] LoginDTO login) { LoginDTO data = new LoginDTO { E
[HttpPost("/authorize/user")]
public async Task<IActionResult> Post([FromBody] LoginDTO login)
{
LoginDTO data = new LoginDTO
{
Email = login.Email,
Password = login.Password
};
var stringPayload = await Task.Run(() => JsonConvert.SerializeObject(data));
var httpContent = new StringContent(stringPayload, Encoding.UTF8, "application/json");
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("myrul");
var response = client.PostAsync("auth/login", httpContent).Result;
var payload = JObject.Parse(await response.Content.ReadAsStringAsync())["token"];
var access_token = payload.Value<string>("access_token");
var refresh_token = payload.Value<string>("refresh_token");
var expires_in = payload.Value<string>("expires_in");
if (response.IsSuccessStatusCode)
return Ok(access_token);
else
return BadRequest();
}
}
我需要授权的API:
[HttpGet]
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
[HttpGet]
[授权(AuthenticationSchemes=JwtBearerDefaults.AuthenticationScheme)]
公共IEnumerable Get()
{
返回新字符串[]{“value1”,“value2”};
}
但问题始终是:
为TokenValidation添加JWTBeareEvent的想法失败了吗?然后,您可以使用调试器检查异常详细信息。更多详细信息请访问:
AddJwtBearer(x=>…
addx.Events=new jwtbearevents{OnTokenValidationFailed=e=>{/*check e.exception*/return Task.CompletedTask;};
将断点放在Task.CompletedTask上并检查异常。您确定您使用的SigningKey与用于在外部api上创建令牌的key匹配吗?@BryanLewis我检查了SigningKey,它现在可以工作了,谢谢!!
[HttpGet]
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}