Добавить аутентификацию с помощью внешнего токена - PullRequest
0 голосов
/ 04 марта 2020

Я получаю access_token из внешнего API (другого приложения), но я не могу аутентифицировать / авторизовать мой API с помощью этого токена, здесь я получаю токен:

    [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();
        }

    }

и запуск. cs:

         services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
        .AddJwtBearer(x =>
        {
            x.SaveToken = true;
            x.TokenValidationParameters = new TokenValidationParameters
            {
                ValidateIssuerSigningKey = true,
                IssuerSigningKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes("012345678901234567890123456789ab")),
                ValidateIssuer = false,
                ValidateAudience = false,
                RequireExpirationTime = false,
                ValidateLifetime = true
            };
        });

API мне нужно авторизовать:

    [HttpGet]
    [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
    public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }

но проблема всегда 401 неавторизована:

почтальон пи c

...