将公钥放到一个子项目中,其他项目需要获取公钥的时候,去该项目中获取

子项目提供接口返回公钥内容

@RestController
public class TestController {
    @RequestMapping("/test")
    public String test() {
        return "-----BEGIN PUBLIC KEY-----\n" +
                "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhIMk0muSD/UbVcvCrwPp\n" +
                "PBr7lcKnuxmEo/IfL9NN4BfVwOkt+ghF7IvQRYKNng32yZzxRcklZbbjST0x8/Ze\n" +
                "aVF4cdn6TKMKveGQV+MwIsfpifcHyEvPiauufvDTLzCyohWUVlRVSzJAU9vYa35+\n" +
                "aAK9ALwuaKGPm7gM7mVhw7m0aiLFgmZ6WHulnaNOPVJb53ERq/XuRbK2YLf9o7\n" +
                "zrU3r0d0Ldv0bXCDWp8hfkFeyt8hUPBI3OhlvKsC+Foar63JcMHgmOXAmHZGF5Gm\n" +
                "WABHh8fH8HEW+gdtVukWUuMfOuTg9DKkiGO+1EM8ZE70XTUKKD2I2qST2b2k6dac\n" +
                "OwIDAQAB\n" +
                "-----END PUBLIC KEY-----";
    }
}

注意:这里可以读取配置文件来实现;

jwt获取公钥

    @Bean
    protected JwtAccessTokenConverter jwtTokenEnhancer() {
        JwtAccessTokenConverter converter =  new JwtAccessTokenConverter();
        String publicKey = null;

        try {
            Properties properties = new Properties();
            String property = null;
            try {
                properties.load(this.getClass().getClassLoader().getResourceAsStream("application.yml"));
                property = properties.getProperty("resource-url");
                System.out.println("property:" + property);

            } catch (IOException e) {
                e.printStackTrace();
            }
            URL url = new URL(property);
            URLConnection conn = url.openConnection();
            // 读取超时
            conn.setReadTimeout(1000);
            // 链接超时
            conn.setConnectTimeout(1000);

            BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
            StringBuilder receive = new StringBuilder();
            String line;
            while ((line = reader.readLine()) != null) {
                receive.append(line);
            }
            reader.close();
            conn.connect();
            publicKey = receive.toString();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        converter.setVerifierKey(publicKey);
        return converter;
    }

初步实现功能;

现在,需要把controller 修改一下:

@RestController
public class TestController {
    @RequestMapping("/test")
    public String test() {
        Resource resource = new ClassPathResource("public.cert");
        String publicKey ;
        try {
            publicKey = new String(FileCopyUtils.copyToByteArray(resource.getInputStream()));
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

        return  publicKey;
    }
}

将public.cert 当做配置文件放到resources 资源路径下就可以了;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值