2016-10-29 6 views
1

私はサーバーにJavaオブジェクトを送信し、その署名を別の方法でサーバーに送信します。そのためには、JSONに変換してから、署名フォームJSONを作成する必要があります。 JOSEで署名付きトークンを作成できますが、オブジェクトデータもトークンに付加するため、トークンが長すぎます。 また、異なる署名者によって1つのオブジェクトに複数回署名する必要があります。暗号化 - Javaでjsonオブジェクトに署名する方法

文字列に対するJSONの会話が常にユニークな形式で表現されるようにするための標準またはツール(少なくともjava/javascript用)はありますか?

JSONデータを含むJWTの2番目の部分を省略し、任意のJSONクリエータを使用して作成することはできますか?

答えが「はい」の場合はどうすればよいですか?

答えて

1

JOSEはフレームワークであり、標準ではありません。 JSONウェブ署名(JWS)はRFC 7515で定義された標準であり、そしてJ SONウェブトークン(JWT)RFC 7519

で定義されたJWS署名を使用して、コンパクトなトークンの形式は、(AT任意の標準またはツールがありますJSONの会話が文字列に常にユニークな形式で表現されることを保証するために、少なくともJava/JavaScriptの場合は?

はい、JWSは、JWSペイロードがBASE64URL(UTF8(JWSペイロード))

JSONデータを含むJWTの第二の部分を省略して、任意を使用して作成することができるように符号化されることを定義しますJSONクリエイター?

JWT(ペイロード)の2番目の部分は省略できますが、その後はJWTにはなりません。私はあなたがJWT(交換認証トークンの目的)を必要としないと思うが、あなたの文書にデジタル署名を適用する。これにはJWSが適しています

しかし、いくつかの署名者では、デジタル署名機能の追加層が必要になります。たとえば、署名者の身元を含めるには、署名者と署名したコンテンツを関連付けるか、署名の順序を設定します。

残念ながらこれを行うには、標準のXML、PDFおよびバイナリ文書

+0

ためのXAdES、PAdESかなCAdESように私は、同じオブジェクトの 'BASE64URL(UTF8(JWSペイロード))'うではない保証一意と信じて、そこにあります。 [this post](http://stackoverflow.com/a/4670638/1385652)によると、JSONオブジェクトを文字列に表示するには複数の方法があり、 'BASE64URL(UTF8(JWS Payload))'は単純にそれらを考慮せず、ペイロード部分は、ペイロードの署名を検証できません。 –

+0

ポストはjsonオブジェクトに署名すること、および署名する前にコンテンツを正規化する必要があることに注意してください。 JWSは、base64urlとしてJSONオブジェクトをシリアライズする正規化を実行します。 2つの異なる値で同じbase64値を生成することはできません(http://stackoverflow.com/questions/30429168/is-a-base64-encoded-string-uniqueを参照)。しかし、base64直列化は常に同じ結果を生成します – pedrofb

関連する問題