ヘッダーをスキップ
Oracleセキュリティ開発ツール・リファレンス
10gリリース3(10.1.3)
B28615-01
  目次
目次
索引
索引

戻る
戻る
次へ
次へ
 

10 Oracle Web Services Security

Oracle Web Services Securityでは、XMLベースのメッセージを使用するWebサービスとの相互作用のために、認証と認可のフレームワークが提供されます。この章では、Oracle Web Services Securityの主要な機能と利点、SDKのインストールおよび使用の方法について説明します。

この章に含まれる内容は次のとおりです。

10.1 Oracle Web Services Securityの機能と利点

Oracle Web Services Securityは、次の機能を提供するPure Javaソリューションです。

10.1.1 Oracle Web Services Securityのパッケージ

Oracle Web Services Securityライブラリには、次のパッケージが含まれます。

表10-1 Oracle Web Services Securityライブラリのパッケージ

パッケージ 説明

oracle.security.xmlsec.wss

トークンやリファレンスの参照および検証のインタフェースなど、Oracle Web Services Securityの汎用クラスを含みます。

oracle.security.xmlsec.wss.encoding

Webサービスの処理をサポートするために必要なアルゴリズムのエンコードとデコードのクラスを含みます。

oracle.security.xmlsec.wss.saml

SAMLアサーション・トークンをサポートするコア・クラスを含みます。

oracle.security.xmlsec.wss.soap

WSSセキュリティ・ヘッダーが付いたSOAPメッセージの作成と解析をサポートするコア・クラスを含みます。

oracle.security.xmlsec.wss.transforms

Oracle Web Services Securityで定義された変換アルゴリズムを実装するクラスを含みます。

oracle.security.xmlsec.wss.username

ユーザー名トークンの作成と解析をサポートするクラスを含みます。

oracle.security.xmlsec.soap

SOAPユーティリティ・クラスを含みます。

oracle.security.xmlsec.wss.x509

X.509証明書トークンをサポートするコア・クラスを含みます。

oracle.security.xmlsec.wss.utils

Oracle Web Services Securityユーティリティ・クラスを含みます。


10.1.2 関連ドキュメント

Webサービス・セキュリティの詳細は、次のリソースを参照してください。

  • OASIS WSS SOAPメッセージ・セキュリティ仕様

  • OASIS WSSユーザー名トークン・プロファイル仕様

  • OASIS WSS X.509証明書トークン・プロファイル仕様

  • OASIS WSS SAMLアサーション・トークン・プロファイル仕様


関連項目:

これらのドキュメントへのリンクは、付録A「リファレンス」を参照してください。

10.2 Oracle Web Services Securityの環境設定

この項では、Oracle Web Services Securityを使用するための環境設定について説明します。この項に含まれる内容は次のとおりです。

10.2.1 Oracle Web Services Securityのシステム要件

Oracle Web Services Securityを使用するには、次のコンポーネントが必要です。

  • Java Development Kit(JDK)バージョン1.2.2以上

  • JAXP互換XMLパーサーおよびXSLTプロセッサ

Oracle Web Services Securityは、次の実装でテストされています。

  • Apache Xalan-Java(Xerces-Jを含む)

  • Oracle XDK for Java

他のパーサーとの互換性の詳細は、http://www.oracle.com/technology/documentationを参照してください。

10.2.2 CLASSPATH環境変数の設定

CLASSPATH環境変数には、必要なjarファイルおよびclassファイルすべてのフルパスとファイル名を指定してください。次の項目をCLASSPATHに指定します。

  • osdt_core.jar

  • osdt_cert.jar

  • osdt_xmlsec.jar

  • osdt_saml.jar

  • jaxen.jarファイル(Oracle XML Securityディストリビューションに含まれるJaxen XPathエンジン)


    注意:

    Oracle XML Securityは、XPathの処理のためにJaxen XPathエンジンを利用します。このディストリビューションに含まれるJaxenライブラリは、Jaxen 1.0 FCSリリースの変更されたバージョンであることに注意してください。CLASSPATHに以前のJaxenリリースも指定する場合は、Oracle XML Securityのバージョンを先に指定するようにしてください。

  • osdt_wss.jar

  • 適切なXMLパーサーおよびXSLTプロセッサの実装(JREの/lib/extまたは/lib/endorsedディレクトリにインストールしていない場合)

10.2.2.1 WindowsでのCLASSPATHの設定

WindowsでCLASSPATHを設定する手順を次に示します。

  1. Windowsの「コントロール パネル」で「システム」を選択します。

  2. 「システムのプロパティ」ダイアログで「詳細設定」タブを選択します。

  3. 「環境変数」をクリックします。

  4. ユーザー環境変数のセクションで「新規」をクリックし、CLASSPATH環境変数をユーザー・プロファイルに追加します。CLASSPATH環境変数がすでに存在している場合は、選択して「編集」をクリックします。

  5. 必要なjarファイルすべてのフルパスとファイル名をCLASSPATHに追加します。

    たとえば、CLASSPATHは次のようになります。

    %CLASSPATH%;C:\ORACLE_HOME\jlib\osdt_core.jar;
    C:\ORACLE_HOME\jlib\osdt_cert.jar;
    C:\ORACLE_HOME\jlib\osdt_xmlsec.jar;
    C:\ORACLE_HOME\jlib\osdt_saml.jar;
    C:\ORACLE_HOME\jlib\jaxen.jar;
    C:\ORACLE_HOME\jlib\osdt_wss.jar;
    
    
  6. 「OK」をクリックします。

10.2.2.2 UNIXでのCLASSPATHの設定

UNIXでは、必要なjarファイルおよびclassファイルすべてのフルパスとファイル名を含むようにCLASSPATH環境変数を設定します。次に例を示します。

setenv CLASSPATH $CLASSPATH:$ORACLE_HOME/jlib/osdt_core.jar:\
$ORACLE_HOME/jlib/osdt_cert.jar:\
$ORACLE_HOME/jlib/osdt_xmlsec.jar:\
$ORACLE_HOME/jlib/osdt_saml.jar:\
$ORACLE_HOME/jlib/jaxen.jar:\
$ORACLE_HOME/jlib/osdt_wss.jar:

10.3 クラスとインタフェース

この項では、Oracle Web Services SecurityのAPIのクラスおよびインタフェースについて説明します。この項に含まれる内容は次のとおりです。

10.3.1 コア・クラスとインタフェース

この項では、Oracle Web Services SecurityのAPIのコア・クラスについて説明し、使用例を示します。

10.3.1.1 oracle.security.xmlsec.wss.WSSecurityクラス

oracle.security.xmlsec.wss.WSSecurityクラスは、WSS SOAPメッセージ・セキュリティ・スキーマの最上位のセキュリティ要素を表します。新しいセキュリティ・ヘッダーの作成または既存のセキュリティ・ヘッダーの検証を行う場合は、まず、このクラスのインスタンスを作成します。

新しいセキュリティ・ヘッダーを作成するには、静的なnewInstance()メソッドをコールしてWSSecurityクラスの新しいインスタンスを作成します。

WSSecuritysig = WSSecurity.newInstance("MySecurityHeaderID");

例10-1に、セキュリティ処理を実行するためにXML文書からセキュリティ要素を取得する方法を示します。

  1. すべてのセキュリティ要素をorg.w3c.dom.Nodeのインスタンスとして含むorg.w3c.dom.NodeListオブジェクトを取得します。

  2. NodeListを反復処理し、各ノードをWSSecurityのインスタンスに変換します。

例10-1 XML文書からのセキュリティ要素の取得

Document doc = Instance of org.w3c.dom.Document;

// Get list of all WSS Security elements in the document.
NodeList secList =
    doc.getElementsByTagNameNS(WSSURI.ns_wsse, "Security");
if (secList.getLength() == 0)
    System.err.println("No wsse:Security elements found.");

// Convert each org.w3c.dom.Node object to an
// oracle.security.xmlsec.wss.WSSecurity object and perform verification
for (int s = 0, n = secList.getLength(); s < n; ++s)
{
    WSSecurity sec = new WSSecurity((Element)sigList.item(s));

    //Process the wsse:Security header
    ...
}

10.3.1.2 oracle.security.xmlsec.wss.soap.WSSOAPEnvelopeクラス

oracle.security.xmlsec.wss.soap.WSSOAPEnvelopeクラスはSOAPメッセージを表します。WSSecurityの場合と同じく、SOAPメッセージの作成、解析および検証には、このクラスを使用する必要があります。

SOAPメッセージを作成するには、例10-2のコードを使用してこのクラスのインスタンスを作成します。

例10-2 SOAPエンベロープの作成

WSSOAPEnvelope env =
    new WSSOAPEnvelope.newInstance(XMLUtils.createDocBuilder());
WSSecurity mySecHdr ......
env.addSecurity(mySecHdr);

メッセージを処理する際、例10-3に示すコードを使用して最上位のSOAPメッセージからSecurity要素を取得できます。

例10-3 SOAPメッセージのSecurity要素の取得

WSSOAPEnvelope env;

//Get List of Security headers
ArrayList l = (ArrayList)senv.getSecurity(null, false);
WSSecurity sec = (WSSecurity)l.get(0);
//Get List of Encrypted Keys
ArrayList r = (ArrayList) sec.getEncryptedKeys();
XEEncryptedKey xk = (XEEncryptedKey) r.get(0);
//Decrypt and Replace message contents
PrivateKey pk .... // Decryption Key
sec.decrypt (xk, pk);

10.3.1.3 oracle.security.xmlsec.wss.WSSElementクラス

oracle.security.xmlsec.wss.WSSElementはWSS Security要素のベース・クラスです。これは、local Id属性およびwsu:Id属性を含む参照要素をサポートします。トークンなどすべてのWSSスキーマ要素は、この要素を拡張したものです。

10.3.2 サポート・クラスとインタフェース

この項では、Oracle Web Services SecurityのAPIのサポート・クラスおよびインタフェースについて説明します。

10.3.2.1 oracle.security.xmlsec.wss.utils.WSSURIインタフェース

oracle.security.xmlsec.wss.utils.WSSURIインタフェースは、アルゴリズム、ネームスペースおよびオブジェクトのURI文字列定数を定義します。

10.3.2.2 oracle.security.xmlsec.wss.utils.WSSTokenUtilsクラス

oracle.security.xmlsec.wss.utils.WSSTokenUtilsクラスは、WSSセキュリティ・トークンの静的ユーティリティ・メソッドを含みます。アプリケーションで頻繁に使用されるメソッドの一部を次に示します。

  • createSecurityToken()

  • createSecurityTokenReference()

  • createUsernameToken()

  • createBinarySecurityToken()

  • createBinarySecurityEncoder()

  • createTimestamp()

10.3.2.3 oracle.security.xmlsec.wss.utils.WSSUtilsクラス

oracle.security.xmlsec.wss.utils.WSSUtilsクラスは、WSSの静的ユーティリティ・メソッドを含みます。アプリケーションで頻繁に使用されるメソッドの一部を次に示します。

  • addWsuIdToElement()

  • createTextFromChild()

  • insertChildElementWithText()

  • prependChild()

  • encodeBinary()

  • decodeBinary()

10.4 Oracle Web Services SecurityのAPIリファレンス

Oracle Web Services SecurityのAPIリファレンス(Javadoc)は次のドキュメントで参照できます。

『Oracle Security Developer Tools Web Services Security Java API Reference』