身份验证Cookie未被浏览器保存

时间:2019-08-16 09:46:17

标签: c# asp.net-core cookies cookie-authentication

我的webapi中有一个用户信息端点,该端点受[Authorize]和cookie身份验证的保护。如果指定的cookie不存在,则用户将被重定向到/account/login,如下所示。

var WindowsAuthenticationSchemeName = Microsoft.AspNetCore.Server.IISIntegration.IISDefaults.AuthenticationScheme;

try
{
    var result = await HttpContext.AuthenticateAsync(WindowsAuthenticationSchemeName);
    if (!(result?.Principal is WindowsPrincipal wp)) { throw new InvalidCredentialException("Expected windows principal"); }

    var claims = Build_Claim_Set_Here;
    var id = new ClaimsIdentity(claims, WindowsAuthenticationSchemeName);

    await HttpContext.SignInAsync(new ClaimsPrincipal(id));

    return Redirect(returnUrl);
}
catch (Exception ex)
{
  return Challenge(WindowsAuthenticationSchemeName);
}

请注意,我没有在SignInAsync请求中指定任何方案名称。由于我的默认身份验证方案是cookie方案,因此我希望在这里使用它。 之后,将重定向响应发送到浏览器(在这种情况下,returnUrl将是用户信息端点。Windows身份验证(在浏览器中带有提示),并且重定向到用户信息端点的效果很好。 / p>

问题在于发送到浏览器的cookie不会保存在浏览器中,因此不会与后续请求一起发送。存储在cookie中的声明对于用户信息端点至关重要。请注意,cookie在浏览器的响应头中可见,并且其大小远低于4096字节,这通常是cookie大小的上限。因此,我不清楚为什么浏览器不保存cookie。

有什么我想念的吗?

更新:糟糕,事实证明是域名输入错误。由于该cookie是同一站点的cookie,因此该cookie既不会保存为应用程序 ,也不会随后续请求一起发送。

0 个答案:

没有答案