【问题标题】:How to extract public and private key from RSA JWK?如何从 RSA JWK 中提取公钥和私钥?
【发布时间】:2018-11-27 00:28:10
【问题描述】:

我正在尝试使用我提供的 JWK 签署一些数据。

到目前为止,我已经尝试使用 jwt.io 做到这一点,标题是

{ "alg" : "RS256", "typ" : "JWT" }

有效载荷是

{ "iss" : "4@john" }

现在要签署这个,我需要一个公钥和一个私钥。我被告知要从提供的 JWK 中提取这些,但我似乎只能从中提取公钥。

我使用过 jwk-to-pem,但是当提供 JWK 时,它只会输出公钥。但是要使用 RS256 签名,我需要一个公钥和一个私钥,我认为私钥是嵌入到 JWK 中的,但我似乎无法提取它。

所以我的问题是,如何从 JWK 中提取公钥和私钥?

JWK 看起来像这样:

"ServicePrincipalKey": {
    "k": null,
    "kid": "urn:service:john:doe:4",
    "kty": "RSA",
    "use": null,
    "n": "rT-...skQ",
    "e": "A...B",
    "x5t": null,
    "d": "CP9...bsQ",
    "p": "7dG...PDk",
    "q": "un4...oxk",
    "dp": "HdF...m4Xk",
    "dq": "XGN...PMk",
    "qi": "0es...UDI",
    "nbf": "0001-01-01T00:00:00",
    "exp": "0001-01-01T00:00:00"
}

【问题讨论】:

    标签: encryption oauth jwt pem jwk


    【解决方案1】:

    找到 jwk-to-pem 的答案。可以选择生成私钥和公钥。

    在 runkit 上我执行了以下代码:

        var jwkToPem = require("jwk-to-pem")
    
        var jwk = {
        "k": null,
        "kid": "urn:service:john:doe:4",
        "kty": "RSA",
        "use": null,
        "n": "rT-...skQ",
        "e": "A...B",
        "x5t": null,
        "d": "CP9...bsQ",
        "p": "7dG...PDk",
        "q": "un4...oxk",
        "dp": "HdF...m4Xk",
        "dq": "XGN...PMk",
        "qi": "0es...UDI",
        "nbf": "0001-01-01T00:00:00",
        "exp": "0001-01-01T00:00:00"
        }
    
        var publicPEM = jwkToPem(jwk);
        console.log(publicPEM);
    
        var options = {"private" : true} //important this will set jwkToPem to output the private key
        var privatePEM = jwkToPem(jwk, options);
        console.log(privatePEM);
    

    这会将公钥和私钥输出到控制台。

    现在通过将这些公钥和私钥填写到 jwt.io 中,我能够生成 JWT

    【讨论】:

    • 您好,请问您从哪里获得 jwkToPem?谢谢
    猜你喜欢
    • 1970-01-01
    • 2011-07-31
    • 2012-01-02
    • 2014-09-23
    • 2019-08-15
    • 2022-11-22
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    相关资源
    最近更新 更多