Web サービス・セキュリティーのトラブルシューティングを行う場合は、 アセンブリー・ツールで構成を確認し、クライアントとサーバーの要求および応答の構成を 一致させます。
Web サービス・セキュリティーのトラブルシューティングは、 アセンブリー・ツ ールで構成を確認し、クライアントとサーバーの要求および応答の構 成を調和させることにより最適に行えます。 これらの構成は必ず一致させる必要があります。 クライアント要求送信側の構成は、サーバー要求受信側の構成と一致している必要があります。暗号化を正常に行うには、 受信側の公開鍵が送信側に対してエクスポートされる必要があり、この鍵が暗号化情報内で正常に構成されている必要があります。認証の場合、 クライアントが使用するメソッドをサーバーのログイン・マッピングで指定する必要があります。以下は、 実行可能な汎用トラブルシューティングのステップのリストです。
これらの 3 行は、実際には 1 行として入力してください。
原因:
このエラーは一般に、 SOAP セキュリティー・ハンドラーが正しくロードされておらず、SOAP 本体に署名がない場合に発生します。 SOAP セキュリティー・ハンドラーは通常、サーバー側で発生する最初の検証であり、 多くの問題によりこのメッセージが表示されます。このエラーは無効な actor URI 構成により発生する場合があります。
解決策:
アセンブリー・ツール内の以下の場所で、actor Universal Resource Identifier (URI) を構成することができます。
クライアントおよびサーバー上の actor 情報は、 両方とも同一のストリングを参照する必要があります。 クライアントとサーバーの actor フィールドが一致すると、 要求または応答はダウンストリームに転送されるのではなく、処理されます。 他の Web サービスのゲートウェイとして動作する Web サービスがある場合は、「actor」フィールドが異なる場合があります。しかし、それ以外の場合、 クライアントおよびサーバーで actor 情報が一致することを検証してください。Web サービス・インプリメンテーションがゲートウェイとして動作し、 ゲートウェイを介して渡される要求同じ actor を構成していない場合、 この Web サービス・インプリメンテーションはクライアントからのメッセージを処理しません。代わりに、要求をダウンストリームに送信します。正しい actor ストリングを含むダウンストリーム・プロセスによって要求が処理されます。応答でも同じ状況が発生します。 したがって、該当するクライアントとサーバーの「actor」フィールドが同期化されていることを確認することが重要です。
また、本体をクライアント構成内で署名されるように指定しない場合には、 エラーが表示されることがあります。 アセンブリー・ツールの Web サービス・クライアント・エディターを使用 してメッセージ本文に署名するには、「セキュリティー拡張」>「Request Sender Configuration」>「保全性」をクリックして、 署名するメッセージ・パートを選択します。
解決策:
セキュリティー拡張機能でクライアントとサーバーのログイン構成情報が一致しているか確認してください。 また、クライアントに有効なログイン・バインディングがあること、 およびサーバーにセキュリティー・バインディングで有効なログイン・マッピングがあることを 確認してください。この情報は、 アセンブリー・ツールの以下の場所を調べることで確認できます。
また、クライアントおよびサーバーで指定された actor URI が一致することを 確認してください。アセンブリー・ツール内の以下の場所で、actor URI を構成することができます。
原因:
この状態は、ログイン構成で IDAssertion を認証メソッドとして構成した場合に発生します。
解決策:
送信側の Web サービスで、 ログイン・バインディング内にトラステッド基本認証エントリーを構成してください。次に、サーバー側で、 トラステッド ID エバリュエーターに基本認証エントリーのユーザー名を含むプロパティーのセットがあることを検証します。
原因:
セキュリティー名が UNAUTHENTICATED となった以下の許可エラーが発生します。CWSCJ0053E: Authorization failed for /UNAUTHENTICATED while invoking (Home)com/ibm/wssvt/tc/pli/ejb/Beneficiary findBeneficiaryBySsNo(java.lang.String):2 securityName: /UNAUTHENTICATED;accessID: null is not granted any of the required roles: AgentRole
この状態は、 ログイン構成が構成されていないため、または Web サービス・セキュリティーがクライアントから サーバーに構成されていないために発生します。 要求がサーバーに到達し、認証情報が受信されない場合、スレッドに UNAUTHENTICATED ユーザーが設定されています。 だれでもアクセスできる特殊な「Everyone」役割以外の役割がリソースに割り当てられている場合、 許可はこのエラーを戻します。
クライアントが正常に Enterprise JavaBeans (EJB) ファイルを認証しても、 EJB ファイルが Web サービス・セキュリティーまたはトランスポート・セキュリティー (HTTP ユーザー ID、 パスワードなど) で構成されていないダウンストリーム EJB ファイルを呼び出す場合、 このダウンストリーム要求に対してエラーが発生する可能性があります。
解決策:
原因:
解決策:
前述の値のタイプのローカル名の 1 つを指定した場合は、値のタイプ URI フィールドに値を入力しないでください。
原因:
Invalid URI: The format of the URI could not be determined.
System.UriFormatException at System.Uri.Parse() at System.Uri..ctor(String uriString, Boolean dontEscape) at System.Uri..ctor(String uriString) at Microsoft.Web.Services2.SoapInputFilter.CanProcessHeader(XmlElement header, SoapContext context) at Microsoft.Web.Services2.Security.SecurityInputFilter.ProcessMessage(SoapEnvelope envelope) at Microsoft.Web.Services2.Pipeline.ProcessInputMessage(SoapEnvelope envelope) at Microsoft.Web.Services2.InputStream.GetRawContent() at Microsoft.Web.Services2.InputStream.get_Length() at System.Xml.XmlScanner..ctor(TextReader reader, XmlNameTable ntable) at System.Xml.XmlTextReader..ctor(String url, TextReader input, XmlNameTable nt) at System.Xml.XmlTextReader..ctor(TextReader input) at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)WebSphere Application Server 内では Web サービス・セキュリティーが有効で、ActorURI 属性が使用されます。 このエラーが発生するのは、Microsoft .NET Web Services Enhancements (WSE) Version 2.0 Service Pack 3 が、 ActorURI 属性の相対 URI 値をサポートしていないためです。 WSE Version 2.0 Service Pack 3 は、この属性に対しては絶対 URI のみをサポートしています。
解決策:
Microsoft .NET クライアントを使用するためには、 この属性を絶対 URI として構成する必要があります。 絶対 URI とは、例えば abc://myWebService のようなものです。 相対 URI とは、例えば myWebService のようなものです。
原因:
証明書のパス設定が正しく構成されていません。
解決策:
「専用署名情報」オプションを選択した場合は、 ドロップダウン・リストにある構成から、トラスト・アンカーと証明書ストアを選択してください。
原因:
このシナリオでは、 WebSphere Application Server の Web サービス・クライアントと Microsoft .NET Web サービスを利用しています。 Microsoft .NET Web サービスには、構成されるユーザー名トークンに ws-security 制約があります。 Microsoft .NET サーバーから次の例外がスローされます。
WSE567: 着信ユーザー名トークンには、nonce と、 リプレイ検出機能の作成時刻の両方が含まれている必要があります。
デフォルトでは、Microsoft .NET Web サービスはユーザー名トークンの nonce (ランダム・ストリング) とタイム・スタンプを検証します。 しかし、WebSphere Application Server を使用する Web サービス・クライアントに対して nonce およびタイム・スタンプ・プロパティーを 構成するかどうかは任意です。
解決策:
原因:
Java 2 セキュリティーが 有効になっているときに com.ibm.wsspi.wssecurity.auth.token.* パッケージを使用すると、 アプリケーションが Java 2 セキュリティー例外を作成します。
WebSphere Application Server バージョン 6.1 では、 com.ibm.wsspi.wssecurity.auth.token.* パッケージの各種 public メソッド用に、 新しい Java 2 アクセス権が設定されました。ご使用のアプリケーションが、 Java 2 アクセス権で保護されるクラスの public メソッドのいずれかを使用するのに、 当該アクセス権を持っていない場合、そのアプリケーションは 失敗します。例外メッセージには、対応する新規 Java 2 アクセス権とともに、 影響を受けるクラスおよび public メソッドを識別する情報が含まれています。
解決策:
grant codeBase "file:${application}" { permission com.ibm.websphere.security.WebSphereRuntimePermission "wssecurity.X509BSToken.setBytes"; permission com.ibm.websphere.security.WebSphereRuntimePermission "wssecurity.X509BSToken.setCert"; permission com.ibm.websphere.security.WebSphereRuntimePermission "wssecurity.WSSToken.setTrusted"; permission com.ibm.websphere.security.WebSphereRuntimePermission "wssecurity.WSSToken.addAttribute"; permission com.ibm.websphere.security.WebSphereRuntimePermission "wssecurity.WSSToken.setUsedTokenConsumer"; };
原因:
クライアントが SOAP エレメントの保全性または機密性を表明しているのに、 そのエレメントがメッセージに含まれていない場合は、例外が発行されます。
クライアントがシグニチャーまたは暗号化を SOAP エレメントに適用するように 要求する場合は、SOAP エレメントが必ず存在していなければなりません。このエレメントの存在は、 オプションではありません。例えば、構成で wscontext エレメントに保全性または機密 性を適用する必要があると指定されているのに、wscontext がメッセージに含まれていないと、以下の例外が発行されます。
com.ibm.wsspi.wssecurity.SoapSecurityException: WSEC5636W: Objects to be processed not found with the dialect [http://www.ibm.com/websphere/webservices/wssecurity/dialect-was] and the keyword [wscontext]
解決策:
クライアント開発者は、 保全性または機密性のターゲットとする SOAP エレメントが必ず SOAP メッセージに含まれていることを、 保証する必要があります。SOAP エレメントが必ず含まれていると 保証できない場合は、SOAP エレメントを保全性または機密性のターゲットにすることは できません。
原因:
クライアントの実行中に、 クライアント出力例外が生成されることがあります。JSR-101 プログラミング・モデルと JSR-109 プログラミング・モデルの違いが、クライアント出力例外の原因になる 場合があります。
ユーザーは、任意の Web サービス・セキュリティー 制約 (ユーザー名トークン、X509 トークン、SOAP エレメントへの署名、SOAP エレメントの暗号化など) を 構成できます。例えば、WebSphere Application Server のクライアントおよび サーバーでは、ユーザー名トークンを構成できます。クライアントは 要求でユーザー名トークンを送信するように構成され、サーバーはユーザー名トークンを予期するように 構成されます。クライアントがユーザー名トークンを送信しないと、 サーバーはその要求を拒否します。Java Naming and Directory Interface (JNDI) ネーミング・ルックアップを 実行しないクライアントは、JSR-109 クライアントではないと思われます。JSR-109 クライアントでない場合は、 JSR-109 構成情報 (セキュリティー構成など) が取得されず、 要求は失敗します。
JSR-109 プログラミング・モデルでは、 呼び出しは JNDI ルックアップから始まり、これによってセキュリティー構成情報を添付することが できます。JSR-101 プログラミング・モデルでは、JNDI ルックアップは実行されず、 セキュリティー構成情報を添付することはできません。
解決策:
JSR-101 プログラミング・モデルでも JSR-109 プログラミング・モデルでも、 この振る舞いは問題とはなりません。 Web サービス・セキュリティーは、JSR-101 クライアントに対しては、 WebSphere Application Server セキュリティー構成情報を提供しません。
クライアントが Web サービス・セキュリティーを要求する場合、そのクライアントは JSR-109 クライアントでなければなりません。