Oracle Web Services Securityでは、XMLベースのメッセージを使用するWebサービスとの相互作用のために、認証と認可のフレームワークが提供されます。この章では、Oracle Web Services Securityの主要な機能と利点、SDKのインストールおよび使用の方法について説明します。
この章に含まれる内容は次のとおりです。
Oracle Web Services Securityは、次の機能を提供するPure Javaソリューションです。
SOAPメッセージ・セキュリティ規格のサポート
ユーザー名トークン・プロファイル規格のサポート
X.509証明書トークン・プロファイル規格のサポート
SAMLアサーション・トークン規格のサポート
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ユーティリティ・クラスを含みます。 |
この項では、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
を参照してください。
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ディレクトリにインストールしていない場合)
WindowsでCLASSPATH
を設定する手順を次に示します。
Windowsの「コントロール パネル」で「システム」を選択します。
「システムのプロパティ」ダイアログで「詳細設定」タブを選択します。
「環境変数」をクリックします。
ユーザー環境変数のセクションで「新規」をクリックし、CLASSPATH
環境変数をユーザー・プロファイルに追加します。CLASSPATH
環境変数がすでに存在している場合は、選択して「編集」をクリックします。
必要な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;
「OK」をクリックします。
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:
この項では、Oracle Web Services SecurityのAPIのクラスおよびインタフェースについて説明します。この項に含まれる内容は次のとおりです。
この項では、Oracle Web Services SecurityのAPIのコア・クラスについて説明し、使用例を示します。
oracle.security.xmlsec.wss.WSSecurity
クラスは、WSS SOAPメッセージ・セキュリティ・スキーマの最上位のセキュリティ要素を表します。新しいセキュリティ・ヘッダーの作成または既存のセキュリティ・ヘッダーの検証を行う場合は、まず、このクラスのインスタンスを作成します。
新しいセキュリティ・ヘッダーを作成するには、静的なnewInstance()
メソッドをコールしてWSSecurity
クラスの新しいインスタンスを作成します。
WSSecuritysig = WSSecurity.newInstance("MySecurityHeaderID");
例10-1に、セキュリティ処理を実行するためにXML文書からセキュリティ要素を取得する方法を示します。
すべてのセキュリティ要素をorg.w3c.dom.Node
のインスタンスとして含むorg.w3c.dom.NodeList
オブジェクトを取得します。
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
...
}
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);
この項では、Oracle Web Services SecurityのAPIのサポート・クラスおよびインタフェースについて説明します。
oracle.security.xmlsec.wss.utils.WSSURI
インタフェースは、アルゴリズム、ネームスペースおよびオブジェクトのURI文字列定数を定義します。
oracle.security.xmlsec.wss.utils.WSSTokenUtils
クラスは、WSSセキュリティ・トークンの静的ユーティリティ・メソッドを含みます。アプリケーションで頻繁に使用されるメソッドの一部を次に示します。
createSecurityToken()
createSecurityTokenReference()
createUsernameToken()
createBinarySecurityToken()
createBinarySecurityEncoder()
createTimestamp()