ASP. NET Core - невозможно установить и прочитать cookie - PullRequest
0 голосов
/ 24 апреля 2020

Как часть процесса аутентификации, мне нужно установить временный повар ie для хранения некоторых пользовательских свойств во время поездки к внешнему провайдеру идентификации. Возможно, меня неправильно поняли, но я подумал, что могу использовать SignInAsync и AuthenticateAsync для хранения и извлечения пользовательских данных из файлов cookie в действиях контроллера:

    [HttpGet]
    public async Task<IActionResult> FirstEndpoint()
    {
        var identity = new ClaimsIdentity();
        identity.AddClaim(new Claim("TestClaim", "TestClaimValue"));
        var principal = new ClaimsPrincipal(identity);
        var props = new AuthenticationProperties { Items = {{"TestProp", "TestPropKey" }}};

        // Issue Cookie for response
        await _httpContextAccessor.HttpContext.SignInAsync("MyTempCookieScheme", principal, props);

        // This will ultimately go elsewhere, but for example purposes just redirect to another action
        return RedirectToAction("Callback");
    }


    [HttpGet]
    public async Task<IActionResult> Callback()
    {
        // Is this not how I would get a user / ClaimsPrincipal from the cookie?
        var result = await _httpContextAccessor.HttpContext.AuthenticateAsync("MyTempCookieScheme");
        // SUCCEEDED IS FALSE :(
        if (result?.Succeeded != true)
        {
            throw new Exception("External authentication error");
        }
        return Ok();
    }

В моем Startup у меня есть:

       services.AddAuthentication(options => { options.RequireAuthenticatedSignIn = false; })
            .AddCookie("MyTempCookieScheme")
...