我有一个与客户端应用程序一起使用的REST服务。客户端应用程序从Auth服务器获取持有者令牌。当我的应用程序向REST服务发送请求以识别用户时,我想使用此令牌。
curl --header "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiSm9obiBEb2UifQ.xuEv8qrfXu424LZk8bVgr9MQJUIrp1rHcPyZw_KSsds" "http://localhost:8080/greeting"
令牌包含关于谁是用户的信息(参见https://jwt.io/),在这种情况下,名称为" John Doe"。
目前我有以下控制器:
@RestController
public class GreetingController {
private static final String template = "Hello, %s!";
@RequestMapping(value = {"/greeting/{name}"})
public String greeting(@PathVariable String name, HttpServletRequest request)
{
return String.format(template,name);
}
}
而不是路径变量中的名称,它应该使用来自承载令牌的名称,并且只有在它是有效令牌时才应该这样做。我的猜测是有一种方法可以添加一个带弹簧安全性的配置,检查它是否是一个有效的令牌,然后将令牌中的信息暴露给控制器。
我知道我可以使用@RequestHeader("Authorization")
访问令牌,但我希望在此之前至少有一种方法可以验证令牌的有效性(例如,令牌中会有一个时间戳来检查它是否仍然存在有效)。