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

如何使用keydepeat解码JWT

宗政子辰
2023-03-14

我在我的应用程序中使用带Spring Boot的KeyClope。我的浏览器客户端请求keydepot生成JWT,然后将此JWT发送到我的ZUUL服务器,该服务器使用keydeport-spring适配器验证JWT,然后我编写了一个预过滤器来解码JWT负载并提取用户名。我正在使用com。auth0。java jwt库来解码jwt,如下面的代码片段所示

 DecodedJWT dJWT=JWT.decode(header);
 String username=dJWT.getClaim("preferred_username").asString();

我想知道是否有什么方法可以不用使用外部库就可以做到这一点。我想使用keydape库显式地解码JWT。我怎样才能做到这一点?

共有2个答案

段干河
2023-03-14

我使用self-jwt将其作为self-details放入jwt,然后使用jwt对其进行身份验证。这是代码

    Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
    if (authentication != null) {
        if (authentication.getPrincipal() instanceof KeycloakPrincipal) {
            KeycloakPrincipal<KeycloakSecurityContext> kp = (KeycloakPrincipal<KeycloakSecurityContext>) authentication.getPrincipal();
            // retrieving username here
            String username = kp.getKeycloakSecurityContext().getToken().getPreferredUsername();
            }
      }

这为我解决了问题。

董元徽
2023-03-14

您必须将KeyClope的核心库包含到您的依赖项中
Gradle:compileOnly'组织。钥匙斗篷:钥匙斗篷核心:3.4。2.最终版本“

然后使用org。钥匙斗篷。TokenVerifier解析令牌
示例:

try
{
  // deprecated: AccessToken token = RSATokenVerifier.create(tokenString).getToken();
  AccessToken token = TokenVerifier.create(tokenString, AccessToken.class).getToken();
  System.out.printf("iss = %s%n", token.getIssuer());
  System.out.printf("sub = %s%n", token.getSubject());
  System.out.printf("typ = %s%n", token.getType());
}
catch (VerificationException e)
{
  // some error handling
}

您还可以通过设置公钥来激活RSATokenVerifier上的各种验证,尤其是签名验证:

RSATokenVerifier。创建(标记字符串)。选中活动(true)。公钥(key)。验证()。getToken()

 类似资料:
  • 问题内容: 我正在使用ExtJS框架。我在 JavaScript中 有MD5函数来加密某些JSON。我的后端使用Java,所以我想知道如何使用 Java 解密MD5 Javascript加密? 这是我正在使用的MD5函数的JS等效项: 问题答案: MD5是 哈希 (即单向转换),因此您无法对其进行解密。您可以将已知哈希与从明文计算出的哈希进行比较,以验证输入的有效性。Java已经为此内置了库。我在

  • 问题内容: 如何使用jQuery解码字符串中的HTML实体? 问题答案: 安全说明: 使用此答案(下面以其原始形式保留)可能会在您的应用程序中引入XSS漏洞。您不应该使用此答案。 阅读lucascaro的答案以获取对该答案中漏洞的解释,然后改用该答案或MarkAmery的答案中的方法。 其实试试看

  • 问题内容: 我一直在玩Go的XML包,看不到以下代码有什么问题。 上面的代码运行无误,并打印到终端: 该结构似乎是空的,但是我看不到为什么它没有填充XML数据。 问题答案: 您的程序接近完成,但是需要指定更多上下文来匹配XML文档。 您需要修改字段标签,以帮助指导XML绑定贯穿您的 结构到您的结构: 根据的文档,第七项在此处适用: 如果XML元素包含名称与格式为“ a”或“ a> b> c”的标记

  • 问题内容: 如何使用Python解码经过pem编码的(base64)证书?例如,这来自github.com: 根据ssl-shopper的说法,应该是这样的: 如何使用python获取此纯文本? 问题答案: Python的标准库,即使是最新版本,也不包含任何可解码X.509证书的内容。但是,附加软件包确实支持此功能。引用文档中的示例: 另一个可选的附加软件包是。这是围绕OpenSSL C API的

  • 问题内容: 我有一个HTML编码的字符串: 我想将其更改为: 我希望将其注册为HTML,以便浏览器将其呈现为图像,而不是显示为文本。 字符串的存储方式是这样的,因为我正在使用一种名为的网络抓取工具BeautifulSoup,它将“扫描”网页并从中获取某些内容,然后以该格式返回字符串。 我已经找到了如何在C#中而不是在Python中执行此操作。有人可以帮我吗? 问题答案: 给定Django用例,对此

  • 有人请帮助我如何解决CWE-259:使用硬编码密码缺陷。