Как часть процесса аутентификации, мне нужно установить временный повар 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")