【问题标题】:nested json JWT nimbus-jose -jwt library嵌套 json JWT nimbus-jose -jwt 库
【发布时间】:2016-02-27 16:21:38
【问题描述】:

我正在尝试按照此处提供的示例创建一个嵌套的 json JWT http://connect2id.com/products/nimbus-jose-jwt/examples/signed-and-encrypted-jwt

import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;

import com.nimbusds.jose.*;
import com.nimbusds.jose.crypto.*;
import com.nimbusds.jwt.*;


    // Generate 256-bit AES key for HMAC as well as encryption
    KeyGenerator keyGen = KeyGenerator.getInstance("AES");
    keyGen.init(256);
    SecretKey secretKey = keyGen.generateKey();

    // Create HMAC signer
    JWSSigner signer = new MACSigner(secretKey.getEncoded());

    // Prepare JWT with claims set
    JWTClaimsSet claimsSet = new JWTClaimsSet();
    claimsSet.setSubject("alice");
    claimsSet.setIssueTime(new Date());
    claimsSet.setIssuer("https://c2id.com");

    SignedJWT signedJWT = new SignedJWT(new JWSHeader(JWSAlgorithm.HS256), claimsSet);

    // Apply the HMAC
    signedJWT.sign(signer);

    // Create JWE object with signed JWT as payload
    JWEObject jweObject = new JWEObject(
        new JWEHeader.Builder(JWEAlgorithm.DIR, EncryptionMethod.A256GCM)
            .contentType("JWT") // required to signal nested JWT
            .build(),
        new Payload(signedJWT));

    // Perform encryption
    jweObject.encrypt(new DirectEncrypter(secretKey.getEncoded()));

    // Serialise to JWE compact form
    String jweString = jweObject.serialize();

我得到的结果 jweString 的问题是不正确

eyJhbGc.
.6Ne
.tw8z

我得到的是 4 个部分而不是 3 个部分,并且有一个空部分

 eyJhbGc.
           .6Ne

【问题讨论】:

    标签: java json jwt


    【解决方案1】:

    JWE 的一般格式有五个部分,<Header>.<EncryptedKey>.<InitializationVector>.<Ciphertext>.<AuthenticationTag>。在某些情况下,例如使用示例中的直接加密,没有加密密钥并且该部分为空。所以你应该得到一个包含五个部分的 JWE,其中一个部分是空的,看起来像 eyJjdHkiOiJKV1QiLCJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiZGlyIn0..PVEd_V4E8qyppt6u.UOLp2qTNMw3iA9tyTEDHeJAdTczzI5uP4BkXHQSC6U73kywATBbvdWqz9nilsSWr1y-E1duTMvRL7hzDyyWPMZnpfnCWsjhzZtTnd22HODMWUpU.CoQq987RvHGIN5D6HhrjiQ

    【讨论】:

    • 谢谢.. 抱歉错过了那部分
    猜你喜欢
    • 2021-10-02
    • 2019-09-08
    • 2018-03-15
    • 2017-05-11
    • 2016-09-14
    • 2021-12-31
    • 2016-06-10
    • 2019-04-27
    • 1970-01-01
    相关资源
    最近更新 更多