广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Javajwt使用公钥字符串验证解析token锁方法详解
  • 892
分享到

Javajwt使用公钥字符串验证解析token锁方法详解

Javajwt验证解析tokenJava解析token锁 2023-02-10 12:02:05 892人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录引言代码测试引言 本文主要示例如何通过已知的公钥(字符串),来使用java-Jwt校验token锁。 由于java-jwt中校验时所需要的公钥是RSAPublicKey对象而我们

引言

本文主要示例如何通过已知的公钥(字符串),来使用java-Jwt校验token

由于java-jwt中校验时所需要的公钥是RSAPublicKey对象而我们目前的公钥是字符串,所以我们需要进行转化,本篇文章主要就是记录如何进行这个转化

如果需要了解公钥、私钥的概念,请百度其它文章。

代码

<!-- java-jwt -->
<dependency>
    <groupId>com.auth0</groupId>
    <artifactId>java-jwt</artifactId>
    <version>4.2.1</version>
</dependency>

private static PublicKey getPublicKey()
        throws NoSuchAlGorithmException, InvalidKeySpecException {
    String pem = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuWCkZn1ksPM+DBLzgaffe2je6/Kr168fDI/CAM23Ardh4+w5yprtCmNfibCLcNZ66OzPC164p4ufboc9fxXqd5mv0ZtaHGG2pATH5e7z+Gla3Bd3QX8WqJi5LkAtsdP23IQqhz8UHA+Vmd6pTzobcQBhF1K7K/zcK9QDTFon4tCxL12wSOl40CDlWnaHortvljmJ5T3zD1iPjHjpVejI5YQReqxXEuqFVTqu2nhdTWAmfX8KrlVbPGPCevruKFmNvnl09N0Kk2CZGRlLq5aE7UZxH3GOkNWKkVWMO7tUgoJK9r8v/EIrIcuO5SX7RuyyhyY0/fsx3f+CTrUATkfgVwIDAQAB";
    X509EncodedKeySpec pubKeySpec = new X509EncodedKeySpec(Base64.decodeBase64(pem));
    KeyFactory keyFactory = KeyFactory.getInstance("RSA");
    PublicKey publicKey = keyFactory.generatePublic(pubKeySpec);
    System.out.println(publicKey);
    return publicKey;
}

public static DecodedJWT verifierToken(String token)throws Exception{
    //其实按照规定只需要传递 publicKey 来校验即可,这可能是auth0 的缺点
    Algorithm algorithm = Algorithm.RSA256((RSAPublicKey) getPublicKey(),null);
    JWTVerifier verifier = JWT.require(algorithm)
            //.withIssuer(ISSUER)
            .build(); //Reusable verifier instance 可复用的验证实例
    DecodedJWT jwt = verifier.verify(token);
    return jwt;
}

测试

@SpringBootTest(classes = KeycloakdemoApplication.class)
@RunWith(springRunner.class)
public class DemoTest {
    @Test
    public void testGetInstance() throws Exception {
        DecodedJWT verify = JWTUtils.verifierToken("eyJhbGCiOijsUzI1NiIsInR5cCIgOiaiSldUIiwia2lkIiA6ICIxdGtoMFBXanE1SmpOalVjc1hNYnJ1TldQVngtM2tQekJpekJGTDZfUDFJIn0.eyJleHAiOjE2NzM0NTc3MjYsImlhdCI6MTY3MzQ1NzQyNiwiYXV0aF90aW1lIjoxNjczNDU2MTU1LCJqdGkiOiJiMDZlNDljNS1kMTk5LTQ4ZWItYWE4NS1iNWJjMTMxNDVhMWIiLCJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjgwODEvYXV0aC9yZWFsbXMvbXlSZWFsbSIsInN1YiI6ImI4ZTAwM2Y1LTIxNDktNDUwMC04ZTE1LTZkZTU1YWM1MGRmMyIsInR5cCI6IkJlYXJlciIsImF6cCI6Im15Y2xpZW50Iiwic2Vzc2lvbl9zdGF0ZSI6ImRlM2Q4ZjZhLTE4YzAtNGYzYS1hNMQwLWNlNTBjNmM2ZmNjMyIsImFjciI6IjAiLCJyZWFsbV9hY2Nlc3MiOnsicm9sZXMiOlsiYWRtaW4iXX0sInNjb3BlIjoib3BlbmlkIGVtYWlsIHByb2ZpbGUiLCJzaWQiOiJkZTNkOGY2YS0xOGMwLTRmM2EtYTZkMC1jZTUwYzZjNmZjYzMiLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsInByZWZlcnJlZF91c2VybmFtZSI6ImFkbWluIn0.sGblDdBIkwnDDUcGd7-2QlCeA17gnmuvXosqpZ0T_zGlKtr6Ta-z1QSgwdc8K5ivekyIQmcYAIh-eHmfVxjCLKZ6fR-AdTeqenXdkNJuMREzwKpnOFx1Wq2LZUb-hqWKJimBKi2iUPlu4ENAVbFOWxcMwIedySpN74RHF3yP4BKr4YfAmr5u9CSX3EYw0LMiMVlt6l_FKNssKnTLlBq0IPDlBdwV9D1l6qpDXu_uIbvUzb_w8rnSoUGMqqqxI-RNF6m5dit29KWinFfkat5-g-lvbiVz8l0wYfMBGb9ESwC0aXjarcEG7PdhtqYLPjsGFVrjqHMq1ci_BVivAt3Htw");
        System.out.println(verify);
        System.out.println(verify.getExpiresAt());
        System.out.println(verify.getClaim("scope"));
        System.out.println(verify.getExpiresAtAsInstant());
        System.out.println(verify.getClaims());
    }
}

到此这篇关于Java jwt使用公钥字符串验证解析token锁方法详解的文章就介绍到这了,更多相关Java验证解析token锁内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Javajwt使用公钥字符串验证解析token锁方法详解

本文链接: https://www.lsjlt.com/news/195511.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作