我正在尝试向受保护的 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(使用前将#替换为@)