2017-12-08 18 views
0

私は現在、Java 6から利用可能なJava XML Digital Signature APIを使用してXMLファイルに署名しています。
ウェブ出典:http://www.oracle.com/technetwork/articles/javase/dig-signature-api-140772.html
Java署名XMLファイル - 署名内に標準のXML署名名前空間が存在しないようにする

署名は次のようになります。今、私が知りたい

<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">[...]</Signature> 

を、これを決定するためのAPIを防ぐために、XMLファイルに署名する方法は、ありxmlns="http://www.w3.org/2000/09/xmldsig#"私のタグの中に、私は以下の持っているように:

<Signature>...</Signature> 

私は、任意の手がかりのために非常に感謝してい。

ご回答ありがとうございます。私の問題の詳細を教えてください。

<?xml version="1.0" encoding="UTF-8" ?> 
<tests xmlns="schema1"> 
<test> 
</test> 
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> 
</Signature> 
</tests> 

私はこれをどのように動かすことができますか?第三者システムでは、自分自身で署名の構造を定義するスキーマと照合する必要があるので、私の中には2つのxmlnがあるはずです

答えて

0

XML標準では、<Signature>これは、あなたがそれを持っているか、接頭辞を持つ親要素の外側にある可能性があります。 As

<rootElemnt xmlns:sig="http://...."> 
    <sig:Signature>.... 

しかし、それはなぜあなたを悩ませますか?それがなければ、<Signature>タグは親要素のデフォルト名前空間に属し、適切な署名名前空間には属しません。

UPDATED 2つの名前空間がある場合、2つのxmlns宣言が必要です。既定の秒にプレフィックスが必要です。または両方にプレフィックスが必要です。カスタム要素がxmlns="schema1"にある場合

は、私はあなたがそれはあなたが完全なXMLを構築する方法によって異なり<sig:Signature xmlns:sig="http://www.w3.org/2000/09/xmldsig#">または

<sch1:tests xmlns:sch1="schema1"> 
    <sch1:test> 
    </sch1:test> 
    <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> 
    ... 
    <sch1:customElement>...</sch1:customElement> 
    </Signature> 
</sch1:tests> 

作るためにどちらかの方法を見てする必要があると思います。申し訳ありませんが、Java XML Digital Signature APIでこれを行う方法はわかりません(WSDLポリシーだけで直接使用することはありません)が、他のすべてのツールでは名前空間接頭辞を処理する機能があります

また、

<tests xmlns="schema1"> 
    <test> 
    </test> 
    <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> 
    ... 
    <sch1:customElement xmlns:sch1="schema1">...</sch1:customElement> 
    </Signature> 
</tests> 

おそらくそれはdefualtすることにより、そのようになっているはずですが、私は推測していない場合は、別途XMLにcustomElementをマーシャリングし、それはそのようにする必要があり署名にそれを追加した場合。

+0

ありがとうございました@Vadim多分あなたは私の追加を見ることができました –

関連する問題