首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用.p8文件对json令牌进行签名

如何使用.p8文件对json令牌进行签名
EN

Stack Overflow用户
提问于 2019-07-25 04:31:19
回答 2查看 1.8K关注 0票数 3

我需要为使用创建一个JWT。我在一个.p8文件中有一个秘密密钥。我的后端是java。我正在尝试使用auth0来完成这个任务。但它说,我必须使用密钥提供者或密钥的ES256算法。我尝试了以下操作,但得到了一个异常"PKCS8未找到“

代码语言:javascript
复制
KeyStore store = KeyStore.getInstance("PKCS8");

我对java世界相当陌生。有人能告诉我如何从.p8文件创建密钥吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-25 04:47:56

我认为你应该使用PKCS8EncodedKeySpec

PKCS8EncodedKeySpec医生

若干码

票数 0
EN

Stack Overflow用户

发布于 2022-08-22 09:12:09

代码语言:javascript
复制
    //remember to remove two lines below in your .p8 key before run code
    //-----BEGIN PRIVATE KEY-----
    //-----END PRIVATE KEY-----
    //begin create a key from .p8 file
    byte[] p8der = Files.readAllBytes(new File("/tmp/AuthKey_KeyId.p8").toPath());
    PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec(new org.apache.commons.codec.binary.Base64().decode(p8der));
    PrivateKey appleKey = KeyFactory.getInstance("EC").generatePrivate(priPKCS8);
    //end create a key from .p8 file
    Map jwtHeader = new HashMap();
    jwtHeader.put("alg", "ES256");
    //addmore header
    JsonObject jwtPayload = new JsonObject();
    jwtPayload.addProperty("iss", "{{replace with your issuer ID}}");
    //addmore properties
    JsonArray scope = new JsonArray();
    scope.add("GET {{replace with your scope}}");
    jwtPayload.add("scope", scope);
    //begin signWithES256
    JwtBuilder jwtBuilder = Jwts.builder()
            .setHeader(jwtHeader)
            .setPayload(jwtPayload.toString())
            .signWith(
                    SignatureAlgorithm.ES256,
                    appleKey
            );
    String jws = jwtBuilder.compact();
    logger.info(jws);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57194359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档