System.IO.IOException: IDX10804: невозможно получить документ из: 'http://localhost:51156/.well-known/openid-configuration&#x27 - PullRequest
0 голосов
/ 04 сентября 2018

Я сгенерировал токен с помощью 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;
            });
    }

Буду очень признателен за любые советы или рекомендации.

...