dpl*_*esa 9 spring spring-security jwt spring-security-oauth2
我创建了一个Spring JWT授权应用程序.JWT包含一些自定义声明.在资源服务器端,我想知道,我应该在哪里解析JWT令牌来收集和检查这些声明?我应该在控制器或某个过滤器中执行此操作吗?什么是最佳做法?也许你有一些例子?
小智 9
您可以结合使用Jackson Object Mapper和Spring Security类,即Jwt,JwtHelper和Authentication.您可以使用Spring Security的静态上下文对象获取身份验证,然后使用JwtHelper解析您收到的令牌.
ObjectMapper objectMapper = new ObjectMapper();
Authentication authentication =
SecurityContextHolder.getContext().getAuthentication();
Map<String, Object> map =
objectMapper.convertValue(authentication.getDetails(), Map.class);
// create a token object to represent the token that is in use.
Jwt jwt = JwtHelper.decode((String) map.get("tokenValue"));
// jwt.getClaims() will return a JSON object of all the claims in your token
// Convert claims JSON object into a Map so we can get the value of a field
Map<String, Object> claims = objectMapper.readValue(jwt.getClaims(), Map.class);
String customField = (String) claims.get("you_custom_field_name");
Run Code Online (Sandbox Code Playgroud)
我建议调试并在上面代码的第三行放置一个断点.此时,公开身份验证对象.我可能会在稍后提供一些有用的细节.
这一切都可以在控制器上完成.我不知道如何使用过滤器这样做.
| 归档时间: |
|
| 查看次数: |
6938 次 |
| 最近记录: |