6

最近、私たちは製品の XML 通信仕様を策定する任務を負っています。私の同僚の何人かは、XML ドキュメントのマーシャリングとアンマーシャリングに関して JAXB に高い意見を持っています。私はそれをいじってしばらく過ごしましたが、それらがどこから来ているのか理解しています。これにより、単純な XML ドキュメントの作業が簡単になります。

今それをノッチを取る。私たちの通信モデルに「ビルトイン」署名検証を使用する人のために、私が見たいと思っていることの 1 つです。私が直面している問題の 1 つは、署名を検証するために、対応する XML をバイトとして扱う必要があることです。それでは、この例を見てみましょう...

<topLevel>
    <sensitiveData encoding="UTF8">
        <creditCard>
            <number>1234-1234-1234-1234</number>
            <expDate>Oct 2020</expDate>
        </creditCard>
    </sensitiveData>
    <signatureOfSensitiveData algorithm="SHA1WithRSA">VGhpc0lzQVNpZ25hdHVyZQ==</signatureOfSensitiveData>
</topLevel>

編集: 実際にはクレジット カード データを渡しているわけではありません。ほんの一例です。

byte[]「sensitiveData」タグ内のすべての (エンコーディングによって決定される) 表現を取得できれば、すばらしいことです。その上で「アンマーシャル」を再度呼び出す必要さえありませんbyte[]

これはまた、私たちに別の扉を開きます。実際に、「圧縮」属性と「暗号化」属性を要素に導入できます。それらを として扱うことができれば、それらをbyte[]膨らませて解読し、それらを再び非整列化するために渡すことができます。

補足: XML を base64 でエンコードして要素に含めると、これが機能すると思います。しかし、その場合、単純なドキュメントであっても base64 を使用せざるを得なくなり、メッセージに不必要な肥大化が生じます。

これに対する解決策のアイデアはありますか? 私の希望は、JAXB の基本的な何かが欠けているだけで、それを取得した後は簡単になることです。

ありがとう!

4

1 に答える 1

0

WS-Security をサポートする JAX-WS フレームワークを使用できます。JAX-WS は JAXB に依存しますが、SOAP プロトコルをサポートする通信部分を追加します。WS-Security は、SOAP/XML における XML 署名、暗号化、およびその他のセキュリティ機能の標準です。WS-Security は、コメントで言及されている XML 署名と暗号化標準に依存しています。

このようなフレームワークの例 (すべてを網羅したリストではありません): Apache CXF、Glassfish Metro など。詳細は.

于 2019-02-17T18:56:12.380 に答える