zoukankan      html  css  js  c++  java
  • jwt rsa 签名 demo

    使用RSA算法签名,生成jwt令牌,这里用spring-security-jwt库,也可以使用jjwt库。

    只支持keystore为jks类型的证书。私钥加密,公钥验签。

    1、生成jwt

    public class CreateJwtTest {
    
        /***
         * 创建令牌测试
         */
        @Test
        public void testCreateToken(){
            //证书文件路径
            String key_location="abc.jks";
            //秘钥库密码
            String key_password="abc";
            //秘钥密码
            String keypwd = "abc";
            //秘钥别名
            String alias = "abc";
    
            //访问证书路径
            ClassPathResource resource = new ClassPathResource(key_location);
    
            //创建秘钥工厂
            KeyStoreKeyFactory keyStoreKeyFactory = new KeyStoreKeyFactory(resource,key_password.toCharArray());
    
            //读取秘钥对(公钥、私钥)
            KeyPair keyPair = keyStoreKeyFactory.getKeyPair(alias,keypwd.toCharArray());
    
            //获取私钥
            RSAPrivateKey rsaPrivate = (RSAPrivateKey) keyPair.getPrivate();
    
            //定义Payload
            Map<String, Object> tokenMap = new HashMap<>();
            tokenMap.put("id", "1");
            tokenMap.put("name", "me");
            tokenMap.put("roles", "ROLE_POWER,ROLE_USER");
    
            //生成Jwt令牌
            Jwt jwt = JwtHelper.encode(JSON.toJSONString(tokenMap), new RsaSigner(rsaPrivate));
    
            //取出令牌
            String encoded = jwt.getEncoded();
            System.out.println(encoded);
        }
    }

    2、取出令牌

    public class ParseJwtTest {
    
        /***
         * 校验令牌
         */
        @Test
        public void testParseToken(){
            //令牌
            String token = "略";
    
            //公钥
            String publickey = "略";
    
            //校验Jwt并生成jwt对象
            Jwt jwt = JwtHelper.decodeAndVerify(token, new RsaVerifier(publickey));
    
            //获取Jwt原始内容
            String claims = jwt.getClaims();
            System.out.println(claims);
    //jwt令牌 String encoded = jwt.getEncoded(); System.out.println(encoded); } }
  • 相关阅读:
    C# 2.0 中Iterators的改进与实现原理浅析
    C#窗口关闭时最小化到托盘
    设计模式有趣解释
    序列化学习
    线程学习
    正则表达式
    .net内存回收与Dispose﹐Close﹐Finalize方法 [摘]
    5.匿名函数lambda
    2dns服务器解析创建
    2.ftp匿名
  • 原文地址:https://www.cnblogs.com/asker009/p/13355636.html
Copyright © 2011-2022 走看看