小编Fis*_*her的帖子

使用现有的 JWT 公钥在 Java 中创建签名

我再次需要你的帮助......

我想访问 Box API 并使用 JWT(Json Web 令牌)进行授权。为此,我需要创建一个断言:
“每个 JWT 断言都由三个组件组成,标头、声明和签名。-
标头指定用于 JWT 签名的算法。-
声明包含必要的信息。验证和提供正确的标记
-签名被用来验证识别应用,并使用公钥验证

一旦被编码,然后连接起来,智威汤逊断言将是这样的:eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9eyJpc3MiOiJ2Z3 B2bWFvaDJjZ2ZjNGRuMzFnMWx0cmlhbmdlZCIsInN1YiI 6IjE2ODczOTQzIiwiZXhwIjoxNDI5MDM3ODYwLCJqdGkiOiJ”。

因此,我之前必须创建一个 RSA 密钥对,并且必须将公钥存放在 Box devolper 应用程序中。

现在,我不知道如何创建签名。我找到了创建密钥对的解决方案,但由于我已经有了这个,我不知道如何修改代码。

import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.Signature;

import sun.misc.BASE64Encoder;

public class MainClass {
  public static void main(String[] args) throws Exception {
    KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
    kpg.initialize(1024);
    KeyPair keyPair = kpg.genKeyPair();

    byte[] data = "test".getBytes("UTF8");

    Signature sig = Signature.getInstance("MD5WithRSA");
    sig.initSign(keyPair.getPrivate());
    sig.update(data);
    byte[] signatureBytes = sig.sign();
    System.out.println("Singature:" + new  
           BASE64Encoder().encode(signatureBytes));

    sig.initVerify(keyPair.getPublic());
    sig.update(data);

    System.out.println(sig.verify(signatureBytes));
  }
}
Run Code Online (Sandbox Code Playgroud)

java signature jwt box-api box

3
推荐指数
1
解决办法
4400
查看次数

标签 统计

box ×1

box-api ×1

java ×1

jwt ×1

signature ×1