Как получить доступ к ASP.NET Core WebAPI (с использованием cookie-аутентификации) из Angular - PullRequest
1 голос
/ 08 апреля 2019

Я пытаюсь получить доступ к ASP.NET Core (1.1.2) WebAPI из Angular (версия 7), который использует проверку подлинности cookie.Бэкэнд для приложения Angular использует аутентификацию ASP.NET Core 2.1.1 и токена JWT.Нужно ли мне возвращать куки в ответ и если да, то как?И как мне получить доступ / сохранить этот файл cookie от Angular?Оба приложения в настоящее время размещены на локальном хосте.

Если файл cookie установлен путем входа в систему вручную (страница входа из углового приложения, использующего WebAPI, который я пытаюсь получить доступ), все работает нормально.Вход в систему из углового приложения происходит через HTTP-форму Razor, которая генерирует данные для __RequestVerificationToken.Что также работает, если я устанавливаю src атрибут <iframe> для запроса входа в WebAPI.Тогда логин тоже работает.

Но если я пытаюсь выполнить процесс входа в систему непосредственно из углового приложения (запрос GET с данными для входа в систему), сам процесс входа проходит, но вход в систему не выполняется.кажется, работает, потому что не было установлено печенье.

Запрос от Angular:

loginToVtsWebConfig(loginUrl: string): Observable<HttpResponse<any>>  {
    return this.http.get<any>(loginUrl, { observe: 'response' });
}

Вот как выглядит URL запроса:

http://localhost:65204/SilentLogin?loginData=g7NfYz4%2fI5bbfPWEdsXoGYtcU8cpGprHaVr2c5m3H81nj6j4gE0YrxwmAyn8c%2ba1YLY55CwkKWP55gKict5J4g%3d%3d

Вход в WebAPI, к которому необходимо получить доступ:

[HttpGet("SilentLogin")]
public async Task<IActionResult> SilentLogin([FromQuery] string loginData)
{
    if (string.IsNullOrEmpty(loginData))
    {
        return Unauthorized();
    }

    var loginModel = ExtractModelFromQuery(loginData);

    if (loginModel == null)
    {
        return NotFound();
    }

    return await Login(loginModel, null);
}

Войдите в систему:

 HttpContext.Authentication.SignInAsync(CookieIdentifier, new ClaimsPrincipal(claimsIdentity), new AuthenticationProperties() { IsPersistent = true, ExpiresUtc = DateTimeOffset.UtcNow.AddDays(1) }).Wait();

Я пытаюсь достичь входа в WebAPI с углового (и сохранить cookie) и впоследствии обращаться к любым методам WebAPI.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...