将 JWT Bearer Authenticating Web API 与 Asp.Net Core 2.0 相结合的问题
Problems combining JWT Bearer Authenticating Web API with Asp.Net Core 2.0
我有以下设置:
Web API 带有 JWT Bearer Auth
Asp.Net Core 2.0 MVC 处理身份并提供视图
AngularJS - 客户端
Angular 正在请求 JWT 令牌并将其传递给后续的 http 请求。
AJAX 通话正常。问题是,如果我通过浏览器请求带有 [Authorize] 的 MVC 操作,则该令牌显然未经过验证,因为没有 cookie 也没有 auth header.
我将如何为 non-ajax 请求实现登录功能?
我假设我需要实施某种 Cookie 身份验证,但我希望在迁移到 JWT 后避免它。
我知道这可能可以通过迁移到 SPA 来解决,但我想知道是否有办法通过 MVC 服务视图保留今天的解决方案 - 老习惯:(
如果您想要服务器端 JWT 身份验证,那么您需要将 JWT 存储在 cookie 而不是本地存储中。 Cookie 是针对您网站的域发布的,因此当您请求您的 MVC 应用程序查看并假设您的 API 和您的 MVC 网站具有相同的来源(相同的架构 + 主机 + 端口)时,受保护应该没有问题MVC 控制器处理 HTTP(S) 请求中传入的 cookie 并决定如何响应。 WebAPI 也应该能够处理带有 JWT 负载的 cookie。我在这里找到了关于 ASP.NET 核心 MVC 身份验证示例项目的好文章:https://auth0.com/blog/asp-dot-net-core-authentication-tutorial/
对于您的 AngularJS SPA,将 JWT 设置为 cookie 而不是将其放入本地存储应该不是问题。它实际上是存储 JWT 的更安全的方式,但您需要确保您的 JWT 不会变得太长,因为 cookie 有效负载大小是有限的。更多相关信息:https://stormpath.com/blog/where-to-store-your-jwts-cookies-vs-html5-web-storage
我有以下设置:
Web API 带有 JWT Bearer Auth
Asp.Net Core 2.0 MVC 处理身份并提供视图
AngularJS - 客户端
Angular 正在请求 JWT 令牌并将其传递给后续的 http 请求。 AJAX 通话正常。问题是,如果我通过浏览器请求带有 [Authorize] 的 MVC 操作,则该令牌显然未经过验证,因为没有 cookie 也没有 auth header.
我将如何为 non-ajax 请求实现登录功能?
我假设我需要实施某种 Cookie 身份验证,但我希望在迁移到 JWT 后避免它。
我知道这可能可以通过迁移到 SPA 来解决,但我想知道是否有办法通过 MVC 服务视图保留今天的解决方案 - 老习惯:(
如果您想要服务器端 JWT 身份验证,那么您需要将 JWT 存储在 cookie 而不是本地存储中。 Cookie 是针对您网站的域发布的,因此当您请求您的 MVC 应用程序查看并假设您的 API 和您的 MVC 网站具有相同的来源(相同的架构 + 主机 + 端口)时,受保护应该没有问题MVC 控制器处理 HTTP(S) 请求中传入的 cookie 并决定如何响应。 WebAPI 也应该能够处理带有 JWT 负载的 cookie。我在这里找到了关于 ASP.NET 核心 MVC 身份验证示例项目的好文章:https://auth0.com/blog/asp-dot-net-core-authentication-tutorial/ 对于您的 AngularJS SPA,将 JWT 设置为 cookie 而不是将其放入本地存储应该不是问题。它实际上是存储 JWT 的更安全的方式,但您需要确保您的 JWT 不会变得太长,因为 cookie 有效负载大小是有限的。更多相关信息:https://stormpath.com/blog/where-to-store-your-jwts-cookies-vs-html5-web-storage