【发布时间】:2020-02-16 10:16:34
【问题描述】:
我正在使用 Angular Web 客户端编写一个 ASP.NET 核心 (2.2) 应用程序。对于身份验证,我使用 JWT 令牌验证:“登录”端点发出 JWT 令牌,然后在 Authorization: Bearer xxxxx 标头中显示。
当 ASP.NET 应用程序和 Web 客户端独立运行时,即当我在 Visual Studio 中启动 ASP.NET 应用程序并在不同端口上使用 ng serve 运行 Web 客户端时,一切正常。
当我将编译器 Web 客户端复制到 wwwroot 目录时,JWT 令牌验证失败。
登录调用仍然成功并返回一个 JWT 令牌。但是在Authorization 标头中使用令牌的下一次调用失败。日志只给出:
承载未通过身份验证。失败信息:否 可用于令牌的 SecurityTokenValidator:eyJhbGciOiJIUzI.....
服务器代码在这两种情况下都是相同的,唯一的变化是客户端的index.html 中的“<base>”标记(因为它是从 asp.net 应用程序的“webapp”子路径提供的)
据我监控网络请求可以看出,标头和令牌已正确发送。唯一的区别是,当客户端从不同的端口运行时,浏览器会发出额外的“OPTIONS”请求(我假设是由于 CORS,但这部分运行良好,Cors 已启用)。
JWT 签名秘密、受众、颁发者等在两种情况下均已设置且相同。
是否有任何其他的 JWT 令牌验证机制可以解释这种行为?
【问题讨论】:
-
你能分享一些代码吗?我面临着完全相同的问题
标签: asp.net-core jwt asp.net-core-2.2