在过滤器中处理可选的 JWT 身份验证是个好主意吗?
Posted
技术标签:
【中文标题】在过滤器中处理可选的 JWT 身份验证是个好主意吗?【英文标题】:Is it a good idea to handle optional JWT Authentication in Filter? 【发布时间】:2020-05-26 21:08:43 【问题描述】:我是 Spring Boot 新手,我目前的项目是使用 Spring Webflux 开发的 REST API。目标是拥有一个具有可选 JWT 令牌的端点,允许您匿名或不匿名创建事物。但据我所知,Spring Security 的所有入门指南都非常复杂,并且使用 Spring MVC。
现在我的想法是创建一个 HandlerFilterFunction
看起来像
class AuthenticationFilter : HandlerFilterFunction<ServerResponse, ServerResponse>
override fun filter(request: ServerRequest, next: HandlerFunction<ServerResponse>): Mono<ServerResponse>
val authHeader = request.headers().header("Authorization").firstOrNull()
// get user from database
request.attributes()["user"] = user
return next.handle(request)
并将其添加到 router ...
bean。
这是个好主意,还是我应该换一个路由器?如果是这样,有人可以向我指出 Spring Webflux 的 JWT 教程。
【问题讨论】:
你可以看看docs.spring.io/spring-security/site/docs/current/reference/… 【参考方案1】:Spring Security docs 指向代码库中的a JWT-Based WebFlux Resource Server sample。
不是基于Kotlin的,所以我刚才也发了a sample of my own;希望它可以帮助您入门。
至于您的问题,是的,您可以创建自己的过滤器,尽管 Spring Security 附带了 BearerTokenAuthenticationFilter
,它已经完成了您的过滤器可能会做的事情。第一个链接示例手动添加此过滤器,而第二个示例让 Spring Boot 添加它。
【讨论】:
这对我的项目来说太多了。我只需要一个简单的 JWT 身份验证而不使用 OAuth。 什么框架要求你做的太多了? Oauth 需要一个 oauth 提供程序,我不需要这个项目 您打算如何验证令牌的正确性? (如果您有兴趣,这里最好有一个聊天室。) 是的,我真的很想和你聊天并更好地了解以上是关于在过滤器中处理可选的 JWT 身份验证是个好主意吗?的主要内容,如果未能解决你的问题,请参考以下文章