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

戻る
戻る
次へ
次へ
 

9 Oracle SAML

この章では、Oracle SAML(Security Assertions Markup Language)のSoftware Development Kit(SDK)の使用について説明します。Java開発者は、Oracle SAMLを使用して、SAML 1.0/1.1仕様に準拠する、クロスドメイン・シングル・サインオンおよびフェデレーテッド・アクセス制御を実装したソリューションを開発できます。

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

9.1 Oracle SAMLの機能と利点

Oracle SAML SDKでは、SAML準拠のJavaセキュリティ・サービスの開発を支援する、サポート・ツール、ドキュメントおよびサンプル・プログラムを含むJava APIが提供されます。Oracle SAMLは、アプレット、アプリケーション、EJB、サーブレット、JSPなどの既存のJavaソリューションに統合できます。

Oracle SAMLでは次の機能が提供されます。


関連項目:

これらの仕様や関連ドキュメントの詳細およびリンクは、付録A「リファレンス」を参照してください。

9.1.1 Oracle SAMLのパッケージ

Oracle SAMLのJava APIには、SAML準拠のJavaアプリケーションを開発するために次のパッケージが含まれます。

oracle.security.xmlsec.saml

このパッケージには、SAMLアサーションをサポートするクラスが含まれます。

oracle.security.xmlsec.samlp

このパッケージには、SAMLのリクエストおよびレスポンスのプロトコル(SAMLP)をサポートするクラスが含まれます。

9.2 Oracle SAMLの環境設定

Oracleセキュリティ開発ツールは、Oracle Application ServerとともにORACLE_HOMEにインストールされます。

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

9.2.1 Oracle SAMLのシステム要件

Oracle SAMLを使用するには、システムにJava Development Kit(JDK)バージョン1.2.2以上が必要です。

9.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エンジン)

  • 選択したXMLパーサーおよびXSLTプロセッサのjarファイル(たとえば、Apache Xalan-Javaを使用する場合はxalan.jarおよびxercesImpl.jar

9.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:\xalan-j_2_6_0\bin\xalan.jar;C:\xalan-j_2_6_0\bin\xercesImpl.jar
    
    
  6. 「OK」をクリックします。

9.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:\
/usr/lib/xalan-j_2_6_0/bin/xalan.jar:/usr/lib/xalan-j_2_6_0/bin/xercesImpl.jar

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

この項では、Oracle SAMLの主要なクラスとインタフェースの使用について説明し、コード例を示します。コア・クラスを次に示します。

サポート・クラスとインタフェースを次に示します。

9.3.1 コア・クラス

この項では、SAMLおよびSAMLPのコア・クラスの概要をコード例と一緒に説明します。

9.3.1.1 oracle.security.xmlsec.saml.SAMLInitializerクラス

このクラスはOracle SAMLのツールキットを初期化します。デフォルトでは、Oracle SAMLはSAML v1.0に対応するように初期化されます。特定のバージョンのSAML仕様に合せてOracle SAMLを初期化することもできます。特定のバージョンに対してinitializeメソッドをコールしても、以前に初期化されたバージョンはそのままになります。例9-1に、SAMLのツールキットをSAML v1.0とSAML v1.1に対して初期化する方法を示します。

例9-1 Oracle SAMLのツールキットの初期化

// initializes for SAML v1.1
SAMLInitializer.initialize(1, 1);
// initializes for SAML v1.0, done by default
SAMLInitializer.initialize(1, 0);

9.3.1.2 oracle.security.xmlsec.saml.Assertionクラス

このクラスは、SAMLアサーション・スキーマのAssertion要素を表します。

例9-2に、新しいAssertion要素を作成して既存のXML文書に追加する方法を示します。

例9-2 Assertion要素の作成とXML文書への追加

Document doc = Instance of org.w3c.dom.Document;
Assertion assertion = new Assertion(doc);
doc.getDocumentElement().appendChild(assertion);

例9-3に、Assertion要素をXML文書から取得する方法を示します。

例9-3 XML文書からのAssertion要素の取得

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

// Get a list of all Assertion elements in the document

NodeList assrtList =
    doc.getElementsByTagNameNS(SAMLURI.ns_saml, "Assertion");
if (assrtList.getLength() == 0)
    System.err.println("No Assertion elements found.");

// Convert each org.w3c.dom.Node object to a
// oracle.security.xmlsec.saml.Assertion object and process

for (int s = 0, n = assrtList.getLength(); s < n; ++s)
{
    Assertion assertion = new Assertion((Element)assrtList.item(s));
    // Process Assertion element
    ...
}

9.3.1.3 oracle.security.xmlsec.samlp.Requestクラス

このクラスは、SAMLプロトコル・スキーマのRequest要素を表します。

例9-4に、新しいRequest要素を作成して既存のXML文書に追加する方法を示します。

例9-4 Request要素の作成とXML文書への追加

Document doc = Instance of org.w3c.dom.Document;
Request request = new Request(doc);
doc.getDocumentElement().appendChild(request);

例9-5に、Request要素を既存のXML文書から取得する方法を示します。

例9-5 XML文書からのRequest要素の取得

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

// Get a list of all Request elements in the document

NodeList reqList =
    doc.getElementsByTagNameNS(SAMLURI.ns_samlp, "Request");
if (reqList.getLength() == 0)
    System.err.println("No Request elements found.");

// Convert each org.w3c.dom.Node object to a
// oracle.security.xmlsec.samlp.Request object and process

for (int s = 0, n = reqList.getLength(); s < n; ++s)
{
    Request request = new Request((Element)reqList.item(s));
    // Process Request element
    ...
}

9.3.1.4 oracle.security.xmlsec.samlp.Responseクラス

このクラスは、SAMLプロトコル・スキーマのResponse要素を表します。SAMLPレスポンス・メッセージの作成の詳しい例は、Oracle SAMLディストリビューションのexamples ディレクトリにあるCreateAuthDecisionResponse.java のサンプル・プログラムを参照してください。

例9-6に、Response要素を作成して既存のXML文書に追加する方法を示します。

例9-6 Response要素の作成とXML文書への追加

Document doc = Instance of org.w3c.dom.Document;
Response response = new Response(doc);
doc.getDocumentElement().appendChild(response);

例9-7に、Response要素を既存のXML文書から取得する方法を示します。

例9-7 XML文書からのResponse要素の取得

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

// Get a list of all Response elements in the document

NodeList respList =
    doc.getElementsByTagNameNS(SAMLURI.ns_samlp, "Response");
if (respList.getLength() == 0)
    System.err.println("No Response elements found.");

// Convert each org.w3c.dom.Node object to a
// oracle.security.xmlsec.samlp.Response object and process

for (int s = 0, n = respList.getLength(); s < n; ++s)
{
    Response response = new Response((Element)respList.item(s));
    // Process Response element
    ...
}

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

この項では、Oracle SAMLのサポート・クラスとインタフェースの概要を説明します。

9.3.2.1 oracle.security.xmlsec.saml.SAMLURIインタフェース

このインタフェースは、アルゴリズム、ネームスペースおよびオブジェクトのURI文字列定数を定義します。次のネーミング規則が使用されます。

  • SAML 1.0仕様に定義されているアクションのネームスペースURIは、action_で始まります。

  • SAML 1.0仕様に定義されている認証メソッドのネームスペースURIは、authentication_method_ で始まります。

  • SAML 1.0仕様に定義されている確認メソッドのネームスペースURIは、confirmation_method_で始まります。

  • ネームスペースのURIはns_で始まります。

9.3.2.2 oracle.security.xmlsec.saml.SAMLMessageクラス

このクラスは、すべてのSAMLおよびSAML拡張メッセージのベース・クラスです。署名することができ、XML-DSIG(デジタル署名)構造体を含むことが可能です。

9.4 Oracle SAMLのJava APIリファレンス

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

『Oracle Security Developer Tools SAML Java API Reference』