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

解析JWT以获取索赔时出现问题

罗晨
2023-03-14

我想获取存储在JWT中的角色声明。我使用以下代码来做到这一点:

   DecodedJWT decodedJWT = JWT.require(Algorithm.HMAC512(SecurityConstants.SECRET.getBytes()))
                    .build()
                    .verify(token.replace(SecurityConstants.TOKEN_PREFIX, ""));
  String user = decodedJWT.getSubject();
  Claim claims = decodedJWT.getClaims();
  String roles = claims.get("roles").toString();

但这最终给出了目标代码:

 (Value of roles)JSONNodeClaim@10091

我调试了代码,发现了这样的声明:

如何提取“ROLE_ADMIN”?

共有2个答案

廖诚
2023-03-14

您可以将索赔转换为索赔类,并调用。方法将其作为字符串返回:

String claims = ((Claim) decodedJWT.getClaim("roles")).asString();
杨骏
2023-03-14

您可以使用chain方法调用获取以下内容:

String claims=decodedJWT。getClaim(“角色”)。as(TextNode.class)。asText()

 类似资料:
  • 作为示例,我们的高级开发人员编写了以下代码: (还有一个“Token.cs”类,它只有一个name属性作为string。) 我们解码的JWT负载如下所示: 我遇到的问题是,当我尝试按“sub”类型获取索赔时,什么都没有出现(而且它不在列表中)。但“sub”似乎是一个极为常见的说法。 我做错了什么?我能拿到主题(“sub”)索赔吗? 编辑:适用于推荐系统。IdentityModel-我在尝试使用它时

  • 问题内容: 我正在用Python阅读JSON文件,其中包含许多字段和值(约8000条记录)。Env:Windows 10,Python 3.6.4;码: 这样我得到一个错误。下面是堆栈跟踪: 伴随着我,我尝试了 与此相关,我的程序运行了很长时间,然后挂起,没有任何输出。 我搜索了几乎与此相关的所有主题,但找不到解决方案。 注意:JSON数据是有效的,因为当我在Postman /任何REST客户端上

  • 这是我第一次体验提升::property_tree我找不到一种方法来重现从留档(如何访问属性树中的数据)之后的树中获取值的方法。这是我为尝试属性树而编写的简单代码: 这是输出: 如<code>树所示。get_value(“whather”)在树中不返回值。get_value(“null”)不引发异常,并且<code>get_optional 我的环境是:

  • 正如我所看到的,Spring Security OAuth2.x项目被移到了Spring Security 5.2.x。我尝试用一种新的方式来实现授权和资源服务器。Everythin工作正常,除了一件事--注释。当我尝试将其与标准一起使用时,我总是被禁止。我看到的是对象的类型为不能解析权限,我不知道为什么。 并在将其强制转换为后声明 资源服务器配置 也许有人也有类似的问题?

  • 在我的解决方案中,我有两个项目。1) Web API和2)MVC。我正在使用ASP。NET核心。API发布JWT令牌,MVC使用它来获得受保护的资源。我正在使用openiddict库发布JWT。在MVC项目中,在AccountController登录方法中,我想要检索ClaimsPrincipal(使用JwtSecurityTokenHandler ValidateToken方法)并分配给Http

  • 问题内容: 因此,我正在制作可以访问给定文件并从中保存/读取文件的文件读取器/写入器。从文件读取时遇到问题。内容是整数,字符串和由“ |”分隔的双精度 定界符。我正在使用StringTokenizer来分隔标记并将它们保存到每个单独的变量中,但是当我读取整数时,即使字符串仅包含一个整数,我也会得到NumberFormatException。 这是代码: 该文件的示例行: 和错误: 我在这里想念什么