当前位置: 首页 > 知识库问答 >
问题:

不使用UsernamePasswordAuthenticationToken的Spring Security JWT验证

慕容宇
2023-03-14

我需要编写我的自定义安全Spring过滤器来验证一个JWT令牌。

我有我的自定义JWT验证器。当令牌有效时,我必须授权用户。

我像其他一些在线演示的示例一样实现了这一点:

UsernamePasswordAuthenticationToken usernamePasswordAuthenticationToken = new UsernamePasswordAuthenticationToken(user_id, null, null);

usernamePasswordAuthenticationToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));  
                  SecurityContextHolder.getContext().setAuthentication(usernamePasswordAuthenticationToken);

这工作得很好,但我的问题是:在不使用UsernamePasswordAuthenticationToken的情况下,是否存在用于JWT验证的专用AuthenticationToken?

共有1个答案

曹浩淼
2023-03-14

当然,从干净代码的角度来看,它看起来不太好,因为它的名称UsernamePasswordAuthenticationToken与对象所做的事情不匹配。JWT与密码无关。就像如果你用橘子这个名字来指代一个苹果,也会让人困惑。

JWT通常用作承载令牌,spring-security-oauth2-resource-server提供了BearerTokenAuthenticationToken。但它会将所有其他OAuth2依赖项的内容拉出到项目中。因此,如果您不需要OAuth2而只需要这个令牌类,只需自己创建一个自己的。

 类似资料:
  • 我被这个JavaSpring Boot问题困住了。我已经在loadUserByUsername方法的返回语句中填写了自动权限:this.get权限(user)。但是当我打印身份验证对象时,它说授予权限为空: UsernamePasswordAuthenticationToken[Principal=mark,Credentials=PROTECTED],Authenticated=true,Det

  • 我刚开始说堆栈。我正在使用jwt来验证apiendpoint'/api/candidates' 在客户端/Angular js服务中,我有以下条目 在服务器端,我有: 这个很管用。即'auth'能够从报头中提取令牌 当我将所有内容改为post而不是get时: 在客户端 在服务器端: 我从jwt得到一个错误,如下所示: 对正在发生的事情有什么建议吗?。我可以用get工作,但我想知道为什么post不工

  • 这就是我面临的问题, https://play.golang.org/p/Pq8xHAERD57 如果运行上述代码,第一个令牌JWKS对不会验证签名,但第二个会验证!但两者都在jwt中验证签名。木卫一。有什么办法可以用一个Golang图书馆来验证它吗? 奇怪的是如果你拿了失败的代币?我调试后发现函数func VerifyPKCS1v15(pub*PublicKey,hash crypto.hash

  • 首先,我是Vaadin7的新手。当我发现BeanFieldGroup.class时,我正在尝试一些vaadin演示。正如我所看到的,这个类将一个字段绑定到一个bean属性。在bean中,使用验证约束注释对属性进行注释(JSR303)。在本例中,我的pom.xml包含hibernate验证器依赖项: 我创建了validationmessage.properties文件,并在其中放了一些消息(带有匈牙

  • 这是用Kotlin编写的User类: 这就是测试: 无效的角色映射为NULL。 这里有一个示例项目,以防您想尝试一些东西。

  • 我正面临一个问题,在Spring Boot vs.Hibernate验证中已经提到过,在自定义约束验证器中依赖项的自动跟踪不起作用。在我自己的调试中,我注意到当发生实体级验证时,Hibernate加载的ConstraintValidatorManager与Hibernate为表单提交执行bean验证时加载的ConstraintValidatorManager不同。后者工作得很好,前者导致自定义约束