Я сгенерировал токен с помощью JwtSecurityToken, однако, когда я добавил его для запроса заголовка в почтальоне для вызова действия в моем API, я столкнулся с этим исключением:
System.IO.IOException: IDX10804: невозможно получить документ из: & # x27; http://localhost:51156/.well-known/openid-configuration'. ---> System.Net.Http.HttpRequestException: код состояния ответа не указывает на успех: 404 (Не Найдено) & # XD;. & # хА; в System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode () & # xD; & # xA; в Microsoft.IdentityModel.Protocols.HttpDocumentRetriever. d__8.MoveNext () & # xD; & # xA; --- Конец внутренней трассировки стека исключений --- & # xD; & # xA; в Microsoft.IdentityModel.Protocols.HttpDocumentRetriever. d__8.MoveNext () & # xD; & # xA; --- Конец трассировки стека из предыдущего расположения, где было сгенерировано исключение --- & # xD; & # xA; в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () & # xD; & # xA; в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Задача) & # xD; & # xA; в System.Runtime.CompilerServices.ConfiguredTaskAwaitable 1.ConfiguredTaskAwaiter.GetResult()
 at Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectConfigurationRetriever.<GetAsync>d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
 at System.Runtime.CompilerServices.ConfiguredTaskAwaitable
1.ConfiguredTaskAwaiter.GetResult () & # xD; & # xA; в Microsoft.IdentityModel.Protocols.ConfigurationManager`1. d__24.MoveNext ()
Вот как я генерирую токены: (для простоты я временно жестко запрограммировал некоторые значения вместо чтения из appsettings.json)
[AllowAnonymous]
[HttpPost]
[Route("")]
public IActionResult RequestToken([FromBody] TokenRequest request)
{
if (request.Username == "Jon" && request.Password == "123456")
{
var claims = new[]
{
new Claim(ClaimTypes.Name, request.Username)
};
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_securityConfig.Key));
var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
var token = new JwtSecurityToken(
issuer: "http://localhost:51156/",
audience: "http://localhost:51156/",
claims: claims,
expires: DateTime.Now.AddDays(3),
signingCredentials: creds);
return Ok(new
{
token = new JwtSecurityTokenHandler().WriteToken(token)
});
}
return BadRequest("Could not verify username and password");
}
И вот как мой метод ConfigureService:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.Authority = "http://localhost:51156/";
options.Audience = "http://localhost:51156/";
options.RequireHttpsMetadata = false;
});
}
Буду очень признателен за любые советы или рекомендации.