>

호세를 사용하려고합니다 ( https://bitbucket.org/b_c/jose4j/ wiki/Home )을 사용하여 서명 된 JsonWebToken을 생성하십시오. 토큰 서명에 사용해야하는 RsaKeyPair를 생성하는 데 문제가 있습니다.

이것은 공개/개인 키를 생성하는 데 사용하는 코드이며 데이터베이스에 저장 한 다음 검색 할 수 있도록이 문자열을 String으로 설정해야합니다.

   WebKeyManager wkm = null;
    Object obj;
    EncryptionKey encKey = null;
    RsaJsonWebKey rsaJsonWebKey = null;
    try
    {
         wkm = new WebKeyManager();
         int    keySize = 512;
         // Initialize KeyPairGenerator.
         SecureRandom random = SecureRandom.getInstanceStrong(); //cryptographically strong random number generator
        // Generate an RSA key pair, which will be used for signing and verification of the JWT, wrapped in a JWK               
        rsaJsonWebKey = RsaJwkGenerator.generateJwk(keySize, random.getProvider().getName(),random);
       // Give the JWK a Key ID (kid), which is just the polite thing to do
        rsaJsonWebKey.setKeyId(""+System.currentTimeMillis());
       String json = rsaJsonWebKey.toJson(OutputControlLevel.INCLUDE_PRIVATE);
}
catch (Exception e)
{
    e.printStackTrace();
}

내가 직면 한 문제는 rsaJsonWebKey.toJson (OutputControlLevel.INCLUDE_PRIVATE)을 수행 할 때입니다.

이 오류가 발생합니다 :

java.lang.ClassCastException: sun.security.mscapi.RSAPrivateKey cannot be cast to java.security.interfaces.RSAPrivateKey
    at org.jose4j.jwk.RsaJsonWebKey.getRsaPrivateKey(RsaJsonWebKey.java:123)
    at org.jose4j.jwk.RsaJsonWebKey.fillPrivateTypeSpecificParams(RsaJsonWebKey.java:135)
    at org.jose4j.jwk.PublicJsonWebKey.fillTypeSpecificParams(PublicJsonWebKey.java:122)
    at org.jose4j.jwk.JsonWebKey.toParams(JsonWebKey.java:166)
    at org.jose4j.jwk.JsonWebKey.toJson(JsonWebKey.java:178)

Jose에서 코드를 디버깅하려고했지만 PublicJsonWebKey 클래스에 오류가 있습니다.

protected void fillPrivateTypeSpecificParams(Map<String,Object> params)
{
    RSAPrivateKey rsaPrivateKey = getRsaPrivateKey();

rsaPrivateKey는 java.security.interfaces.RSAPrivateKey이며 getRsaPrivateKey ()는 org.jose4j.jwk.RsaJsonWebKey를 반환합니다

내가 뭘 잘못하고 있니?

내 요구 사항은 KeyPairs를 생성하고 varchar 유형 필드 또는 이와 비슷한 것으로 데이터베이스에 저장 한 다음 필요할 때마다 데이터베이스에서 문자열을 검색하고 다시 개인/공개 키로 변환하고 서명하는 데 사용할 수 있습니다 토큰?

  • 이전 angular - 이오니아 2 페이지 알림에 두 번 푸시
  • 다음 python - 재귀 목록 추가