如何从 ASP NET Core 控制器获取 JWT 令牌?

2024-01-07

我正在尝试向受保护的 API 发出请求,因此我需要向 HttpClient 添加授权请求标头,如下所示:

client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "Your Oauth token");

但是如何从控制器获取身份验证令牌(“您的 Oauth 令牌”)?

PS:我已经通过了 Identity Server 4 的身份验证。 在 AspNetCore 中开发的应用程序。

完整代码:

    [Authorize] //Already authenticated
    public IActionResult SomeControllerAction()
    {
        var claimsIdentity = User.Identity as ClaimsIdentity; //where is JWTToken??
        var JWTTokne = "how to get?";

        using (var client = new HttpClient())
        {
            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", JWTTokne);
            var result = client.PostAsync("someurl", new StringContent(json, Encoding.UTF8, "application/json")).Result;
            //more code to handle result....
        }

        return View();
    }

Core:

var accessToken = await HttpContext.Authentication.GetTokenAsync("access_token");

Or this:

var token = Request.Headers["Authorization"];

对于 MVC 5 控制器中的 access_token 我使用:

var token = (User as ClaimsPrincipal).FindFirst("access_token").Value

在受保护的 Web api 2(非核心)方法中,我使用了:

var access_token = ControllerContext.Request.Headers.Authorization.Parameter;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 ASP NET Core 控制器获取 JWT 令牌? 的相关文章

随机推荐