我有一个带有 JWT 身份验证的 Rest API(在 Spring Boot 中编码)。一切正常,但是如果您将无效的 JWT 发送到不受限制的端点,我会收到 401 未经授权的响应。如果我没有发送 JWT 授权承载标头,则一切都会按预期工作。
查看 spring security 提出的这个 github 问题,维护者认为这是正确的行为,尽管我不明白为什么?
一般来说,最好的做法是在客户端处理此问题,存储不受限制的端点并且不向这些端点发送授权标头,还是这不是推荐的行为?
在我看来,如果它真的是
unrestricted
,你可以避免它成为filtered
。我的意思是,你必须创建一个 WebSecurityCustomizer
,类似这样的:
@Bean
public WebSecurityCustomizer webSecurityCustomizer() {
return (web) -> web.ignoring().requestMatchers("/ignore1", "/ignore2");
}
但总的来说,我同意发布在12599上的评论:
将不记名令牌发送到 /info/permit 是无效请求,并且是调用者的错误。不记名令牌是一种凭证,凭证只能传递到受保护的端点。如果请求发送到公共(不受保护)端点,则无需发送任何凭据