在java项目中 pn 钱包接入JWT方式登录

2024-04-16 174点热度 0人点赞 0条评论

particle 接入jwt登录方式

官方文档: https://docs.particle.network/developers/auth-service/custom
2024-04-17: "We only support RS256 now." by particle

流程

  1. 生成公钥和私钥
  2. 将生成好的公钥在 https://russelldavies.github.io/jwk-creator/ 生成 JWK
  3. 将生成好的 JWK 放到 {"keys":[{}]} 的 数组子元素里面,做成 jwks.json 文件
  4. 上传 jwks.json 文件 到网站或者 对象存储,获取可以外部访问的 your_url
  5. https://dashboard.particle.network/#/customAuth
    • Jwks URI: your_url ;
    • Unique Id Key: your_uid
    • userId; JWT to Verify: your_token
  6. 点击 save

代码demo

 

    com.auth0
    java-jwt
    4.4.0
import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
import com.mylomen.demo.common.utils.encryption.RSAUtils;
import com.mylomen.demo.common.utils.file.ResourceFileUtils;

import java.io.File;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;

public class JwtTools {

    /**
     * 参考文档 https://docs.particle.network/developers/auth-service/custom
     *
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {
        //ResourceFileUtils 工具参见 https://mylomen.com/archives/141
        File publicKeyFile = ResourceFileUtils.getConfigLocation("classpath:ssh/test_pub").getFile();
        File privateKeyFile = ResourceFileUtils.getConfigLocation("classpath:ssh/test_private").getFile();
        // 生成密钥对.  当本地没有需要的公私钥时,调用此方法生成. 如果本地已经生成好了 或者已经存在了 则不需要.
        //获取 classpath:ssh/test_pub 和 classpath:ssh/test_private 绝对路径 生成
        //RSAUtils 工具参见 https://mylomen.com/archives/142
        //RSAUtils.generateKey("Absolute_path/ssh/test_pub",
        //      "Absolute_path/ssh/test_private",
        //    "yourSecret",
        //   2048);

        //获取 publicKey
        PublicKey publicKey = RSAUtils.getPublicKey(publicKeyFile);
        //获取 privateKey
        PrivateKey privateKey = RSAUtils.getPrivateKey(privateKeyFile);

        System.out.println("####################");
        try {
            Algorithm algorithm = Algorithm.RSA256((RSAPublicKey) publicKey, (RSAPrivateKey) privateKey);
            String your_token = JWT.create()
                    //https://dashboard.particle.network/#/customAuth for  Unique Id Key
                    .withClaim("your_uid", "64603")
                    .sign(algorithm);
            System.out.println(your_token);
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }
}

mylomen

本人从事 JAVA 开发10多年,将之前整理的笔记分享出来,希望能够帮助到努力的你。

文章评论