この章では、Oracle Application Server Web Servicesセキュリティで作業している際に発生する可能性のあるエラーの解決方法を説明します。エラーは次のカテゴリに分けられます。
クライアント側で発生したエラーをトラブルシューティングする際に、参照が必要なファイルは<generated_name>_Stub.xmlデプロイメント・ディスクリプタ・ファイルです。サーバー側で発生したエラーの場合、確認が必要なファイルはoracle-webservices.xmlデプロイメント・ディスクリプタとwsmgtm.xml管理構成ファイルです。
エラーのロギング
エラーはlog.xmlファイル(ORACLE_HOME/j2ee/home/log/oc4j/log.xml)にロギングされます。この付録で説明されているエラーをロギングするには、j2ee-logging.xmlロギング構成ファイルでロギング・レベルをTRACE:32に設定してから、新しい値を有効にするためにWebサービスを再起動します。
ロギング・レベルの値はApplication Server Controlでリセットできません。
エラー番号
Web Services Securityの現行リリース(10.1.3.1.0)のエラー番号は、OWS-20nnn(nは整数)という書式です。以前のリリースでは、J2EE-WSEnnnnnという書式でした。
この付録で説明されているエラーについて、対応するエラー番号がある場合は記載されています。
|
関連資料: OracleAS Web Servicesのエラー・メッセージの全接頭辞は、『Oracle Application Server Web Services開発者ガイド』の付録「エラー・メッセージ接頭辞」に記載されています。 |
SOAPヘッダーに<wsse:Security>がありません
このエラー・メッセージは、受信したメッセージにセキュリティ・ヘッダーがない場合にスローされます。クライアント・アウトバウンド・ポリシーが<generated_name>_Stub.xmlのクライアント側デプロイメント・ディスクリプタに存在することと、サーバー・アウトバウンド・ポリシーがoracle-webservices.xmlのサーバー側デプロイメント・ディスクリプタまたはwsmgmt.xmlファイルに存在することを確認します。
アウトバウンド・ポリシー(セキュリティ構成)が存在しない場合は、Webサービス記述とポート名を確認します。操作レベルのみでセキュリティを構成している場合は、必ず<runtime enabled="security"/>要素をポート・レベルで設定します。
SOAPがエラーを理解する必要があります
enabled="security"属性がありません。enabled="security"属性がoracle-webservices.xmlファイルおよびクライアント側管理ファイルに存在することを確認します。oracle-webservices.xmlに存在する場合は、wsmgmt.xmlファイルに存在するか確認します。
レルムをフェッチできません
レルム名が正しくないか、存在しません。ORACLE_HOME/j2ee/home/config/jazn.xmlファイルにあるデフォルトのレルム名を確認します。ユーザーが独自のorion-application.xmlファイルを指定している場合は、<jazn>要素のレルム名を確認します。レルム名は有効なレルムであり、JAZNプロバイダ上のXML/LDAPリポジトリ・ベースに存在する必要があります。
OWS-20098: サブジェクト・キー識別子を解決できませんでした
必ずキーストアに署名者の公開鍵証明書を格納してください。たとえば、クライアント側キーストアに別名xyzという署名鍵がある場合は、別名xyzに対応する公開鍵証明書がサーバー側キーストアに格納されている必要があります。
keytoolまたはOracle Walletへの証明書のインポートの詳細は、「キーストアの使用方法」を参照してください。
信頼できるルートに対する署名者の証明書パスの検証時の例外
一致する公開鍵(署名者の秘密鍵に対応する)を含む署名者の証明書と、信頼できるCA証明書をキーストアにインポートします。証明書が証明連鎖内にある場合は、証明連鎖内のすべての証明書をインポートします。
keytoolまたはOracle Walletへの証明書のインポートの詳細は、「キーストアの使用方法」を参照してください。
OWS-20014: 暗号化の証明書が見つかりません
<recipient-key>要素が見つからないか、正しくない値が含まれています。<recipient-key>要素がアウトバウンドの<encrypt>要素に存在することを確認します。これは有効な鍵を示す必要があります。鍵は、<key-store>要素のpath属性で指定する必要があります。クライアントの公開鍵を使用してクライアントに返されるレスポンスの暗号化に<use-request-cert>要素を使用している場合は、必ず、クライアントに対するアウトバウンド・ポリシーを<x509-token/>で構成してください。
<recipient-key>要素の詳細は、「アウトバウンド・メッセージに対する暗号化要素」を参照してください。<use-request-cert>要素の詳細は、「署名鍵によるメッセージの暗号化」を参照してください。
OWS-20060、OWS-20061: 別名<some_alias>のキーが存在しません、別名<some_alias>の証明書が存在しません
指定された別名を持つ秘密鍵または証明書がキーストアに存在することを確認します。
キーストアまたはOracle Walletへの鍵および証明書の追加の詳細は、「キーストアの使用方法」を参照してください。
OWS-20063: 受信者キー別名が無効です
正しい受信者の鍵別名を持つ公開鍵をキーストアに格納したか、確認します。
キーストアまたはOracle Walletへの鍵および証明書の追加の詳細は、「キーストアの使用方法」を参照してください。
OWS-20074: キーストア・パスが無効です
<key-store>要素のpath属性の値が正しいことを確認します。
クライアント側ではキーストア・パスは絶対パスである必要があります。クライアント・アプリケーションがOC4Jコンテナにデプロイされている場合、このパスはORACLE_HOME/j2ee/homeに対する相対パスである可能性があります。
サーバー側ポート・レベル・キーストアでは、パスはアプリケーションのルート・ディレクトリに対する相対パスである必要があります。たとえば、アプリケーションtest-applicationをデプロイした場合、キーストアのパスはORACLE_HOME/j2ee/instance/applications/test-application/ディレクトリに対する相対パスになります。
サーバー側グローバル・レベル・キーストアでは、パスはORACLE_HOME/j2ee/home/configディレクトリに対する相対パスである必要があります。
configディレクトリを示すためにoracle.security.jazn.configシステム・プロパティを使用している場合、サーバー側グローバル・レベル・キーストアのパスは、このプロパティで指定されたディレクトリに対する相対パスである必要があります。このプロパティはサーバー側グローバル・レベル・キーストア・パスに対してのみ有効なので、注意してください。
<key-store>要素の詳細は、「キーストア要素」を参照してください。
キーストア・データの読取り中にエラーが発生しました
<key-store>要素のpassword属性の値を確認します。パスワードが正しくないか、何者かがキーストアを改ざんした可能性があります。
password要素の詳細は、「キーストア要素」を参照してください。
別名<some_alias>による証明連鎖の取得中にエラーが発生しました
証明連鎖がキーストアに存在することを確認します。キーストアを表示するにはkeytool -listコマンドを使用します。
keytoolコマンドの詳細は、「キーストアの使用方法」を参照してください。
信頼できる証明書の取得中にエラーが発生しました
信頼できるCA証明書をすべてキーストアに追加したことを確認します。キーストアを表示するにはkeytool -listコマンドを使用します。
keytoolコマンドの詳細は、「キーストアの使用方法」を参照してください。
特定のname-spaceおよびlocal-partを持つ要素には署名が必要です
アウトバウンド<signature>要素で、<tbs-elements>のname-spaceおよびlocal-part属性の値が正しいことを確認します。これらの値は、インバウンド<verify-signature>要素で署名されることが要求される要素に対するname-spaceおよびlocal-partの値と一致する必要があります。
これらの要素の詳細は、「インバウンド・メッセージに対する署名検証要素」と「アウトバウンド・メッセージに対する署名要素」を参照してください。
特定のname-spaceおよびlocal-partを持つ要素が見つかりません
アウトバウンド<signature>要素で、<tbs-elements>のname-spaceおよびlocal-part属性の値が存在し、正しいことを確認します。
これらの要素および属性の詳細は、「アウトバウンド・メッセージに対する署名要素」を参照してください。
createdまたはtimestampがありません
アウトバウンド<signature>要素には、created属性がtrueに設定された<add-timestamp>要素が含まれる必要があります。次に例を示します。
<signature>
<add-timestamp created="true" expiry="28800"/>
</signature>
<add-timestamp>要素の詳細は、「アウトバウンド・メッセージに対する署名要素」を参照してください。
タイムスタンプが期限切れです
これは、クライアントとWebサービス・アプリケーションを稼働中のマシンの時間が一致していないことを示します。マシン間の時間誤差を調整するには、インバウンド<verify-signature>要素のclock-skewプロパティを設定します。値の単位はミリ秒です。次に例を示します。
<verify-signature>
<property name="clock-skew" value="5000"/>
</ verify-signature>
clock-skewの使用方法の詳細は、「クライアントとWebサービス・アプリケーション間の時間誤差の調整」を参照してください。
タイムスタンプが無効です
これは、クライアントとWebサービス・アプリケーションを稼働中のマシンの時間が一致していないことを示します。リクエストで設定されているタイムスタンプの値を確認し、インバウンド<verify-signature>要素のclock-skewプロパティの設定を調整します。
リクエスト・メッセージのタイムスタンプの値は、メッセージ到着時刻マイナス時間誤差の値よりも早くなります。
clock-skewの使用方法の詳細は、「クライアントとWebサービス・アプリケーション間の時間誤差の調整」を参照してください。
ポリシーには整合性が必要です
アウトバウンド<signature>要素に有効な構成が含まれていることを確認します。これはインバウンド<verify-signature>構成(が存在する場合)と一致する必要があります。
これらの要素の詳細は、「インバウンド・メッセージに対する署名検証要素」と「アウトバウンド・メッセージに対する署名要素」を参照してください。
OWS-20005: 要素が署名に見つかりません
アウトバウンド・ポリシーの<signature>要素で、<tbs-elements>のname-spaceおよびlocal-part属性の値が有効であることを確認します。
これらの要素の詳細は、「アウトバウンド・メッセージに対する署名要素」を参照してください。
OWS-20096: サブジェクト鍵識別子のない署名証明書
署名用に構成した署名鍵を確認します。公開鍵証明書にはサブジェクト鍵識別子の拡張領域が存在する必要があります。
OWS-20015: KEY_ENCIPHERMENTの証明書を使用できません
受信者鍵(use-request-certの場合はクライアント署名鍵)に、有効な鍵が暗号化されている鍵用途拡張領域があることを確認します。
OWS-20018、OWS-20019: 署名キーが見つかりません、署名証明書が見つかりません
<signature-key>要素が有効な別名とパスワードで構成されていることを確認します。秘密鍵または証明書が、<key-store>タグで構成されているキーストアに存在する必要があります。
これらの要素の詳細は、「キーストア要素」と「署名および暗号の鍵の要素」を参照してください。
無効な<signature-methods/>が構成されています。署名アルゴリズムを少なくとも1つ指定する必要があります
インバウンド<verify-signature>要素内の<signature-methods>要素はオプションです。署名アルゴリズムが指定されていない場合は、この要素は省略する必要があります。<signature-methods>要素が存在する場合は、有効な署名アルゴリズムを少なくとも1つ指定する必要があります。受入れ可能な署名アルゴリズムはRSA-SHA1(デフォルト)、RSA-MD5およびDSA-SHA1です。
<signature-methods>要素の詳細は、「インバウンド・メッセージに対する署名検証要素」を参照してください。
署名済メッセージを必要とするWebサービスが無署名のメッセージを受信した場合、エラーが返されません
クライアントが、署名されたメッセージのみ受信するように構成されているWebサービスに無署名のメッセージを送信した場合、エラーまたは例外は返されません。
署名検証用に構成されたWebサービスによって不適切なエラーが返されました
クライアントが、署名検証に構成されたWebサービスに暗号化されたメッセージを送信した場合、NULLポインタ例外が返されます。これは、この問題に対する不正な例外です。正しい例外は、適切な文字列メッセージのあるoracle.j2ee.ws.common.soap.fault.SOAP11FaultExceptionです。
OWS-20002: 暗号キーがポート/グローバル・レベルで見つかりません
インバウンド・ポリシーが<decrypt>に構成されているときに暗号鍵がポート/グローバル・レベルで見つからない場合に、このエラー・メッセージが表示されます。<encryption-key>要素と<key-store>要素を確認します。aliasおよびpassword属性の値が正しいことを確認します。
これらの要素の詳細は、「キーストア要素」と「署名および暗号の鍵の要素」を参照してください。
URIコンテンツは暗号化する必要があります
アウトバウンド<encrypt>要素で、<tbe-elements>要素の<tbe-element>下位要素が正しいname-spaceおよびlocal-part属性値を持つことを確認します。
<tbe-element>下位要素の詳細は、「アウトバウンド・メッセージに対する暗号化要素」を参照してください。
ポリシーには秘匿性が必要です
アウトバウンド<encrypt>要素に有効な構成があり、インバウンド<decrypt>要素の構成と一致することを確認します。
これらの要素の詳細は、「インバウンド・メッセージに対する復号化要素」と「アウトバウンド・メッセージに対する暗号化要素」を参照してください。
無効な<keytransport-methods/>が構成されています。アルゴリズムを少なくとも1つ指定する必要があります
インバウンド<decrypt>要素内の<keytransport-methods>要素はオプションであるため、鍵トランスポート・メソッドが指定されていない場合は、省略する必要があります。<keytransport-methods>要素が存在する場合は、有効な鍵トランスポート・アルゴリズムを少なくとも1つ指定する必要があります。受入れ可能な鍵トランスポート・アルゴリズムはRSA-1_5(デフォルト)またはRSA-OAEP-MGF1Pです。
<keytransport-methods>要素の詳細は、「インバウンド・メッセージに対する復号化要素」を参照してください。
無効な<encryption-methods/>が構成されています。アルゴリズムを少なくとも1つ指定する必要があります。
インバウンド<decrypt>要素内の<encryption-methods>要素はオプションであるため、暗号化メソッドが指定されていない場合は、省略する必要があります。<encryption-methods>要素が存在する場合は、有効な暗号化アルゴリズムを少なくとも1つ指定する必要があります。受入れ可能な暗号化アルゴリズムは3DES、AES-128(デフォルト)およびAES-192です。
<encryption-methods>要素の詳細は、「インバウンド・メッセージに対する復号化要素」を参照してください。
無効なセキュリティ・トークンが指定されています
「無効なセキュリティ・トークンが指定されています」または同様のエラー・メッセージは、Webサービスを起動するときに返されます。
このエラーにはいくつかの原因が考えられます。
プレーン・テキスト・パスワード認証によるユーザー名トークンの場合:
正しくないユーザー名が入力されました。
正しくないパスワードが入力されました。
正しくないレルムの<レルム名>/<ユーザー名>が入力されました。レルム名とユーザー名が正しいかどうかを確認します。書式が正しいかどうかを確認します。たとえば、この書式ではダブル・スラッシュ(//)やバックスラッシュ(\)ではなく、フォワード・スラッシュ(/)を使用する必要があります。
password-type属性に正しくない値が入力されました。この値はプレーン・テキスト(1ワード)である必要があります。2ワードで入力されていないか、またはスペルミスがないか確認します。
ダイジェスト・パスワード認証によるユーザー名トークンの場合:
(前述した)プレーン・テキスト・パスワード認証によるユーザー名トークンで列記した理由をすべて確認します。
password-type属性に正しくない値が入力されました。この値はダイジェストである必要があります。
add-nonceおよびadd-created属性の値を確認します。ダイジェスト・パスワード認証では、これらの属性は常にtrueに設定する必要があります。
X.509トークン認証の場合:
デフォルトでは、サービスは証明書の鍵暗号化アルゴリズムとしてRSA-SHA1を求めます。このかわりにDSAが証明書の鍵暗号化アルゴリズムとして使用される場合は、これが正しく構成されていることを確認します。サーバー側およびクライアント側の構成では、署名メソッドとしてDSAを明示的に指定する必要があります。
SAMLトークン認証の場合:
正しくないユーザー名が入力されました。
ポリシーには認証トークンが必要です
アウトバウンド・ポリシーには、サーバーで求められる認証トークンが1つ必要です。たとえば、インバウンド・ポリシーに<verify-x509-token>および<verify-username-token>が含まれる場合は、アウトバウンド・ポリシーには<username-token>または<x509-token>のどちらかが必要です。
|
注意: アウトバウンド・ポリシーで指定できる認証トークンは1つのみです。インバウンド・ポリシーには複数の認証トークンを指定できます。 |
暗号化要素が見つかりません
アウトバウンド<encrypt>要素で、<tbe-elements>要素の<tbe-element>下位要素が有効なname-spaceおよびlocal-part属性値を持つことを確認します。
これらの属性の詳細は、「アウトバウンド・メッセージに対する暗号化要素」を参照してください。
サブジェクト確認メソッドが無効です
<saml-token>要素のサブジェクト<confirmation-method>下位要素に有効な値が含まれることを確認します。受入れ可能な確認メソッドはSENDER-VOUCHES(デフォルト)、SENDER-VOUCHES-UNSIGNEDおよびHOLDER-OF-KEYです。
<confirmation-method>下位要素の詳細は、「アウトバウンド・メッセージに対するSAMLトークン要素」を参照してください。
X.509トークンが見つかりません
<signature-key>要素の構成でaliasおよびpassword属性に有効な値が含まれることを確認します。
alias値を持つ秘密鍵がキーストアに存在する必要があります。
キーストア・コンテンツの確認の詳細は、「キーストアの使用方法」を参照してください。<signature-key>要素の詳細は、「署名および暗号の鍵の要素」を参照してください。
OWS-20012: ユーザー名が見つかりません
アウトバウンド・ポリシーの<username-token>要素に有効なname属性があることを確認します。ユーザー名をStub.USERNAME_PROPERTYで設定している場合は、このプロパティで設定された値が正しいことを確認します。コールバック・ハンドラを使用している場合は、Namecallbackで設定された値を確認します。
<username-token>要素の詳細は、「アウトバウンド・メッセージに対するユーザー名トークン要素」を参照してください。Stubプロパティとコールバック・ハンドラの使用の詳細は、「クライアント側のユーザー名トークンの構成方法」を参照してください。
OWS-20022: アサーションが無効です。パブリック・キーがありません。
holder-of-keyアサーションの定義を確認します。アサーションにはサブジェクトにおけるユーザーの公開鍵が必要です。
ユーザーを認証できないか、トークンが無効です
このエラーの主な原因は、ユーザーがリポジトリ内で見つからないことです。プロバイダによって、異なる属性がユーザーのマップに使用されます。jazn.xmlファイルでマッピング属性とレルム名が正しいことを確認します。また、プロバイダがXMLの場合はorion-application.xmlで指定されたjazn-data.xmlファイルの場所を確認します。デフォルトでは、これはsystem-jazn-data.xmlとなり、ユーザーはこのリポジトリに存在する必要があります。ローカルのjazn-data.xmlファイルがある場合は、ユーザーはこのファイルに存在する必要があります。デフォルトでは、XMLプロバイダに対するマッピング属性はCNとなります。