如何在 Aspnet Core 中的授权标头中存储 JWT 令牌

use*_*162 0 c# jwt openid-connect asp.net-core

我在 .Net Core 中有一个“身份验证服务”应用程序,它通过质询请求进行身份验证,然后使用令牌重定向回客户端应用程序。

    [AllowAnonymous]
    [HttpGet("Login")]
    public IActionResult Login()
    {
        return Challenge(new AuthenticationProperties
        {
            RedirectUri = returnUrlQs
        }, OpenIdConnectDefaults.AuthenticationScheme);
    }
Run Code Online (Sandbox Code Playgroud)

目前,我使用 OpenId Connect 事件通过 HTTP cookie 传输令牌options.Events.OnAuthorizationCodeReceived。然而 4kb cookie 长度太小,所以我想尝试将其移至授权标头。

我尝试设置响应标头,但另一端没有收到它;在客户端应用程序上。

这有可能实现吗?

谢谢你的帮助!

juu*_*nas 5

设置请求标头是客户端的工作,而不是 API 的工作。所以你的后端无法设置这些。您需要返回令牌,以便前端的代码可以获取它,然后将其分配为未来请求的请求标头。

这里的另一个选择可能是从前端应用程序进行 OpenID Connect 身份验证(取决于您的身份提供商支持的内容)。这样,它将获取令牌并能​​够刷新它们,并且您的 API 可以专注于验证请求中的令牌。