2017-10-26 9 views
0

Json Webトークン(JWT)の生成にjose4jバージョン0.6.0を使用しています。すべては、トークンの生成、トークンの検証まで良好です。 JWTの主張のペイロードは、要素バージョンのように、TokenIdが、発行者、アクセス権などの番号を持つことができ、私はTokenPermissionsにoneM2Mにおける標準オブジェクトは、コードのスニペット上jose4j JWTのクレームセットの文字列オブジェクト以外の属性タイプ

JwtClaims claims = new JwtClaims(); 
claims.setIssuer("[email protected]"); 
claims.setAudience("CSE001"); // 
..... 
......... 
TokenPermissions tokenPerms = new TokenPermissions(); 
TokenPermission tokenPerm = new TokenPermission(); 
tokenPerm.getResourceIDs().add("RXYZ"); 
tokenPerm.setPrivileges(setOfAcr);// setOfACr is another object on oneM2M  
tokenPerms.getPermission().add(tokenPerm); 
claims.setClaim("permissions",tokenPerms); 

すなわち2仕様をリリースされたオブジェクトを渡している、次のJWTのクレームセットを生成し、{iss = DAS @ ServiceProvider、aud = CSE001、exp = 1508999613、jti = H1wm_yaOe61Co-wND7wBAw、DAS @ CDOT-SP、iat = 1508996013、nbf = 1508995953、sub =件名、[email protected]、groups =

トークン全体が署名と申し立ての検証を通過しますが、[私は型キャストしようとしていますpermission属性をTokenPermissionsに渡します。エラー以下

tokenPermsObject =  jwtClaims.getClaimValue("permissions",TokenPermissions.class); 

それを通じ: org.jose4j.jwt.MalformedClaimException:「アクセス権の主張の値が期待されるタイプではありません([email protected]は - java.lang.Stringではキャストできませんxyz.xsd.TokenPermissions.TokenPermissions)

jose4j JWTで渡すことができるクレームオブジェクトのタイプは、クレームセットにテキストを強制的に渡す必要がありますか。どんな助けも高く評価されます。

答えて

1

jose4jのJSON処理は、JSON.simpleツールキットから派生したもので、JSONとJavaオブジェクト間の変換方法はかなり基本的なものです。文字列、数字、ブール値、マップ、リストを行います。

さらに洗練されたJSONライブラリを使用する必要がある場合は、setPayload(...)JsonWebSignatureに設定してJWTを作成し、別の場所で作成したJSON文字列を使用できます。そして、JWTを消費するとき、JwtContextString getJwt()は、他のlibに引き渡すことができるJSON文字列ペイロードを与えます。

+0

返信と助けのためのBrain、私はまた、送信者の最後に複雑なJavaオブジェクトをシリアル化しようとしていたし、受信者側にそれを逆直列化しました。 Json SerializationがJose4Jでサポートされない理由を知っていますか?今後のリリースでサポートする計画はありますか? –

関連する問題