c# - .NET Core 2.1 中的 HttpContext.GetTokenAsync 无法检索 JWT

标签 c# asp.net-core jwt access-token asp.net-core-2.1

这真的让我摸不着头脑,因为我可以创建一个 JWT。我可以添加一个属性来授权 Controller ,并查看如果我不将“授权”“承载( token )”添加到 header ,它将返回 401 未经授权。然而,像获取 token 字符串来获取其有效负载声明这样简单的方法是行不通的。

所以这工作正常:

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

这不会:

var token2 = await HttpContext.GetTokenAsync(JwtBearerDefaults.AuthenticationScheme, "access_token");

我已经更改了签名,在启动时连接了 IHTTPContextAccessor,如下所示:

services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();

我可以看到 IHttpContextAccessor 有值以及授权 key 。我可以发誓这曾经可以在 .NET Core 2.0 中轻松工作,但现在不行了。我在启动或程序中缺少一个简单的连接吗?此时我将只从 Request.Headers 获取数据。但这感觉就像是黑客攻击。

最佳答案

这似乎是 known issue在 ASP.NET Core 2.1 中(在即将发布的 2.2 中修复)。我链接的 GitHub 问题的建议是只从 header 中提取值,就像您在问题中所做的那样。一旦 2.2 发布并且您能够升级,您应该能够恢复使用 HttpContext.GetTokenAsync

关于c# - .NET Core 2.1 中的 HttpContext.GetTokenAsync 无法检索 JWT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52793488/

相关文章:

asp.net-core - 无法在asp.net core 2.0中使用CookieAuthenticaton和openidConnect身份验证

java - 使用 Spring Boot 设置无状态身份验证

c# - 相关链接自动获得 session ID

c# - 在 mac/win 上以编程方式访问 chrome 和 firefox 密码?

asp.net - ASP.NET 5 如何找到 config.json

python - 散列格子请求正文 Webhook

java - JJWT 生成的 token 具有无效签名

c# - 在 C# 中使用 ffmpeg.exe 将 MPG 转换为 AVI

c# - 提供程序配置的自定义配置文件

asp.net-core - 包 [某些包] 与 netcoreapp 不兼容