問題タブ [wsit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2817 参照

java - 自己署名証明書 (Glassfish) を使用した Web サービスでの WSIT セキュリティの使用

このガイドを使用して Metro の証明書を作成しました: http://www.jroller.com/gmazza/entry/using_openssl_to_create_certificates

これで、servicestore.jks と clientstore.jks ができました。

キーストアを確認すると、servicestore.jks の PrivateKeyEntry が myservicekey で、trustedCertEntry が myclientkey であることがわかります。clientstore.jks ではその逆です。

これらをクライアント xml とサービス wsit xml で使用します。公式の WSIT チュートリアルに従って、Netbeans でこれを行いました。すべてが正常に展開されます。

したがって、クライアントからのメソッド呼び出しをテストすると、次の例外が発生します。

[#|2011-10-19T08:59:38.465+0200|INFO|glassfish3.1.1|com.sun.metro.policy|_ThreadID=81;_ThreadName=http-thread-pool-8080(1);|WSP5018: ロード済みファイルからの WSIT 構成: file:/opt/glassfish3/glassfish/domains/domain1/applications/testwebapp/WEB-INF/classes/META-INF/wsit-client.xml.|#]

[#|2011-10-19T08:59:41.167+0200|SEVERE|glassfish3.1.1|javax.enterprise.resource.xml.webservices.security|_ThreadID=84;_ThreadName=http-thread-pool-8080(4); |WSS1533: 自己署名証明書の検証に失敗しました.|#]

[#|2011-10-19T08:59:41.171+0200|SEVERE|glassfish3.1.1|com.sun.xml.wss.provider.wsit|_ThreadID=84;_ThreadName=http-thread-pool-8080(4); |WSITPVD0035: インバウンド・メッセージのセキュリティー検査でエラーが発生しました。com.sun.xml.wss.XWSSecurityException: 自己署名証明書の検証が com.sun.xml.wss.impl.misc.WSITProviderSecurityEnvironment.validateCertificate(WSITProviderSecurityEnvironment.java:937) com.sun.xml.ws.security で失敗しました。 opt.impl.incoming.X509BinarySecurityToken.validate(X509BinarySecurityToken.java:185) at com.sun.xml.ws.security.opt.impl.incoming.SecurityRecipient.handleSecurityHeader(SecurityRecipient.java:396) at com.sun.xml. com.sun.xml.ws.security.opt.impl.incoming.SecurityRecipient の ws.security.opt.impl.incoming.SecurityRecipient.cacheHeaders(SecurityRecipient.java:275)。

クライアント xml で間違ったパスワードを使用しようとすると、別の例外が発生し、間違ったファイル名を使用すると、ファイルが見つからないという例外が発生しました。したがって、少なくともクライアントストアが見つかります。

そのため、サービス キーストアに何か問題があるのではないかと考え (自分のキーストアではなく、デフォルトの GlassFish キーストアを使用している可能性があると考えています)、domain.xml でいくつかのオプションを見つけました。だから私はこれらを変更しました:

-Dcom.sun.enterprise.security.httpsOutboundKeyAlias=myservicekey -Djavax.net.ssl.keyStore=${com.sun.aas.instanceRoot}/config/servicestore.jks -Djavax.net.ssl.keyStorePassword=sspas -Djavax. net.ssl.trustStore=${com.sun.aas.instanceRoot}/config/servicestore.jks -Djavax.net.ssl.trustStorePassword=sspass -DSERVER_KEY_ALIAS=myservicekey -DCLIENT_KEY_ALIAS=myclientkey

しかし、サーバーを再起動すると、この例外が発生し、管理コンソールのログインにアクセスできません:

............. 原因: java.io.IOException: キーストアが改ざんされたか、sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:772) でパスワードが正しくありませんでした.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:55) at java.security.KeyStore.load(KeyStore.java:1214) at com.sun.enterprise.security.ssl.impl.SecuritySupportImpl.loadKS(SecuritySupportImpl) .java:254) at com.sun.enterprise.security.ssl.impl.SecuritySupportImpl.loadStores(SecuritySupportImpl.java:208) ... 63 詳細 原因: java.security.UnrecoverableKeyException: sun.security でパスワードの検証に失敗しました。 provider.JavaKeyStore.engineLoad(JavaKeyStore.java:770) ... 67 もっと見る

次に、WSIT チュートリアルで次のことを読みました。Glassfish で WSIT セキュリティを使用するには、信頼できるストアを GlassFish のキーストアにインポートし、NetBeans IDE からそれらの証明書を指定する必要があります。

では、自分のキーストアを使用することはできませんか? domain.xml を変更したときに何か見落としましたか? それとも、jvmオプション全体の前に間違っていましたか?

0 投票する
1 に答える
2323 参照

java - SpNego: 欠陥のあるトークンが検出されました

WCF サービスに接続する Java クライアントがあります。このサービスは、ホスト上で別のドメイン ユーザーとして (つまり、ローカル サービスやネットワーク サービスとしてではなく) 実行するように構成されています。サービスは、その WSDL で userPrincipalName を発行します。

SpNego トークン交換中に、クライアントで次の例外が発生します

ローカル システム アカウントで実行するように WCF サービスを構成すると、SpNego トークン交換が機能します。ローカル システム アカウントで実行されていないサービスのコードを変更する必要はありますか?

更新-1

C# クライアントを WCF サービスに接続してデバッグを行った後、C# クライアントがMS-SPNGと呼ばれる SpNego プロトコルの修正版を使用していることがわかりました。Java 6 はこれをサポートしていますか? トークンを調べると、サポートされていないメカニズム 1.2.840.113554.1.2.2.3 に関するエラーが表示されます。

0 投票する
1 に答える
290 参照

java - JavaSTSメカニズムの例外

さまざまなセキュリティメカニズムを使用していくつかのパフォーマンステストを実行し、それらを比較するWebサービスを実装しようとしています。GlassfishでJavaとNetbeans7を使用しています。すべてのセキュリティメカニズムを実装できましたが、STSに問題があります。STSを作成するためにこのガイドに従っていますが、すべての手順を実行してプロジェクトを実行しようとすると、次の例外が発生します。

それとそれを克服する方法は何ですか?Thnx。

0 投票する
1 に答える
3150 参照

java - wsdlを変更せずにwsit-client.xml?

wsdl と複数の技術文書に記述されている Web サービスを呼び出す必要があります。

Web サービス プロバイダーは、OASIS をサポートしていると述べています (ws-security、http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf )。ただし、プロバイダーから受け取った wsdl には、そのことは記載されていません。

管理上、メッセージの暗号化と署名を実装する必要があります。以前は、これは軸と wsdd ファイルを使用して行われていました。

Web サービス用の jax-ws クライアントを作成しました。ここで、ws-security を追加したいと思います。正しく理解できれば、wsit-client.xml ファイルを作成する必要があります。ただし、それを wsdl で参照する必要があるかどうかはわかりません。できれば変更したくないので、新しいバージョンを入手しても変更する必要はありません。これは可能ですか?

さらに、netbeans を使用して wsit-client.xml を生成しようとしました。署名/暗号化のオプションを取得できませんでした。wsdlにポリシーについての言及がないからですか?私たちは Eclipse を使用しているので、簡単なテストには netbeans のみを使用しています。

0 投票する
2 に答える
1267 参照

jax-ws - 複数の wsit-client.xml

複数の jax-ws ベースの Web サービス クライアントをデプロイした Web アプリがあります。それらはすべて、独自の wsit-client を必要とします。サービス クラスをインスタンス化するときに使用する wsit-client.xml ファイルを指定する方法はありますか?

wsit-client ファイルをそれぞれの jar ファイルにパッケージ化して、Web サービス クライアントごとに分けておきたいと思います。

0 投票する
1 に答える
1545 参照

java - WSITは、カスタムセキュリティヘッダーを使用した要求後のSOAPセキュリティヘッダーを理解しません

Metro/WSITライブラリを使用してJavaWebサービスクライアントを作成しています。ヒットする必要のあるWebサービスはWCFサービスです。(私はサービス側とWSDLをほとんどまたはまったく制御できません。)

Webサービスは、トランスポートレベルセキュリティ(SSL)と、セキュリティトークンサービス(WS-Trust / WS-Security)を使用したフェデレーションセキュリティモデルの両方で保護されています。Windows Identity Foundationを使用して.NETにクライアントを簡単に実装し、最初にセキュリティトークンを発行してから、(CreateChannelWithIssuedToken)メソッドを使用して他のWebサービスに要求を行いました。

ただし、Metro / WSITを使用して、Javaでこの動作を模倣するのは困難です。WSDLにWS-Policy情報がないため、WSITはサービスとの通信のセキュリティ処理を有効にしないことを理解しています。送信する前にSOAPリクエストヘッダーを操作してリクエストを行う際にこれを手動で行いましたが、.NETクライアント側で受信するのと同じメッセージを受信して​​います。

今、私の問題は、次のエラーが発生していることです。

SOAP応答のヘッダーにセキュリティセクションがあるためです。

WSDLを変更できない場合、Metro / WSDLに手動で強制的に応答のセキュリティ処理を有効にして、この例外がスローされないようにする方法はありますか?セキュリティヘッダーを使用するつもりはありません。応答のペイロードは期待どおりです。クライアントがmustunderstand="1"のヘッダーを理解していない場合、私が見ているのは正しい動作であることは理解していますが、この例外を抑制する方法を探しています。

私はこれのような他の質問を読みましたが、それは私が望むものに近いようですが、私はまだ答えを見つけていません。アドバイス/解決策/など。どうもありがとうございました!

0 投票する
0 に答える
1295 参照

jax-ws - SAML2 トークンを使用してセキュリティで保護された WCF Web サービスにアクセスするためのスタンドアロン Java クライアントの作成

プレーンな Java クライアントと Metro Web サービス API (webservices-rt-2.2.0-1) を使用して、.NET プラットフォームで記述されたセキュリティで保護された Windows Common Foundation (WCF) Web サービスにアクセスしようとしています。

Ant ターゲットを含む WCF Web サービスの WSDL を使用して、Web サービスの成果物を生成することができました。

WCF Web サービスにアクセスするには、SOAP 要求に SAML2 トークンを挿入する必要があります。この SAML2 トークンは、REST サービスにアクセスすることによって取得され、その応答には SAML2 アサーションが含まれます。現時点では、トークンを String オブジェクト (アサーション XML 全体) として持っています。

このコードは次のエラーをスローしていました: WST0029:STS の場所を IssuedToken またはクライアントから取得できませんでした

このため、コードを次のように変更しました。

以上でSTSロケーションエラーはなくなりましたが、以下のエラーが見られました。スレッド「メイン」の例外 javax.xml.ws.WebServiceException: com.sun.xml.wss.jaxws.impl.SecurityClientTube.processRequest(SecurityClientTube.java:250) の java.lang.NullPointerException .api.pipe.Fiber.__doRun(Fiber.java:961) com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:910) com.sun.xml.ws.api.pipe com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:775) の .Fiber.doRun(Fiber.java:873) com.sun.xml.ws.client.Stub.process(Stub) .java:429) com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:168) com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:119) ) com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:

SOAP メッセージのロギングを有効にしましたが、リクエストを確認したところ、セキュリティ関連の情報がリクエストに含まれていないことがわかりました。無効なセキュリティがリクエストに存在することを示す失敗応答が Web サービス エンドポイントから返されています。

私は疑問に思っています: 1. これまでのところ、私はクライアントと正しい方向に進んでいますか? 2. REST サービスを呼び出して SAML2 トークンの応答を解析する最良の方法は何ですか? 3. ステップ 2 の SAML2 トークンを Web サービス all に設定するにはどうすればよいですか?

WCF Web サービスの実装者によると、フェデレーション セキュリティではなく WS-Security を使用しています。受信した SAML2 トークンは次のようになります。

いくつかの WSDL ファイルが提供されました。スニペットは以下に貼り付けられます: WSDL 1:

WSDL 2:

さらに情報が必要な場合は、お知らせください。これについて何か助けていただければ幸いです。前もって感謝します!カール。

0 投票する
1 に答える
1707 参照

java - Metro + WSIT を使用して、サービス エンドポイントでプレーンテキストの WS-Security パスワードを取得しますか?

私は、ある種の「転送プロキシ」として機能し、本文のいくつかの要素を置き換えてから、別の SOAP サービス (Y) を呼び出す SOAP サービス (X と呼びましょう) を作成しています。Y を呼び出したときに X で受け取るのと同じ WS-Security 資格情報 (プレーンテキストのユーザー名とパスワード) を使用したいのですが、Password 要素の値を取得するのに問題があります。

ファイルで宣言するポリシーは、次wsit-package.service.xmlの実装を参照しますcom.sun.xml.wss.impl.callback.PasswordValidationCallback.PasswordValidator

バリデーターでパスワードにアクセスできます。

ただし、バリデーターは WebServiceContext にアクセスできないため、サービス エンドポイントにアクセスできる便利な保存場所がありません。

WS-Addressing などの他のヘッダーを使用すると、ハンドラー (の実装SOAPHandler<SOAPMessageContext>) を使用して値を取り出し、エンドポイントが取得するアプリケーション スコープの下のコンテキストに戻すことができます。WS-Security ヘッダーは、SOAP メッセージがハンドラー チェーンに到達するまでに既に取り除かれているため、ハンドラーでそれらの値を取得する方法はありません。

バリデーターを使用してパスワードをデータベース/グローバル マップ/スレッドローカル ストレージに格納するなどの抜本的なことを行う以外に、エンドポイントで提供された WS-Security パスワードを取得する方法はありますか?

を介してエンドポイントで WS-Security ユーザー名情報にアクセスできますSubject subj = SubjectAccessor.getRequesterSubject(context)が、これにはパスワードが含まれていないようです。

0 投票する
0 に答える
405 参照

java - netbeans で特定の WSDL (Axis2 で作成) から Metro WSIT クライアントを作成する方法は?

Axis 2 によって生成され、セキュリティ ポリシーを宣言する WSDL ファイルがあります。

メトロ サイトのチュートリアルに従って、WSDL から netbeans で Web サービス クライアントを生成しました。チュートリアルでは、KeyStore などを宣言するために Web サービス属性を編集するように指示されていますが、私の場合、セキュリティ オプションのみを編集することはできません。

誰でもこの問題で私を助けることができますか? クライアントに Axis2 を使用した方がよいでしょうか? それはどのくらい難しいですか?安全な通信のために、キーストアを使用します。

WSDL ファイル:

0 投票する
0 に答える
909 参照

java - WSIT 構成ファイルのロード回数が多すぎます

Glassfish (v3.0.1)アプリケーション サーバーにデプロイされた Web サービスがあります。今日、多くの訪問者 (約 300 ~ 400 人) が私たちの Web ページを訪れ、残念ながらサーバーがダウンしました。問題を特定し、できるだけ早く修正するよう努めています。

SoapUI を使用した負荷テストは成功しましたが、何が問題なのかわかりません。数万人にサービスを提供する予定であるため、300 百人のユーザーだけであれば問題はないはずです。サーバー ログを確認すると、WSIT構成ファイルが何度も (数千回以上) ロードされていることがわかります。ユーザーがアクセスするたびに、このファイルが読み込まれると思います。毎回ロードするのは正常ですか (そしてサーバーログに何千回もメッセージが表示されます)、それとも一度だけロードする必要がありますか? 一度だけロードするだけでも、サーバーに負荷がかかり、誰もページにログインできなくなるのでしょうか?

これは、ログの完全なメッセージです。

サーバーの故障の原因について、他に提案をいただければ幸いです。

Glassfish の設定を編集しようとしています。JVM 設定を変更し、以下の行を追加しました。

MaxPermSize=512m

Xmx35g

Xms32g

Dsun.net.client.defaultConnectTimeout=2

Dsun.net.client.defaultReadTimeout=10

また、スレッドプールの設定を次のように変更しました。

最大キュー サイズ: 4096

最大スレッド プール サイズ: 4000

最小スレッド プール サイズ: 64

アイドル スレッド タイムアウト: 900

このような構成で多くの同時スレッドを処理しても問題ないでしょうか、それとも別のカスタマイズを使用する必要がありますか。多くのスレッドを処理するために、Glassfish を最適化しようとしています。