Oracle® Fusion Middleware Oracle Security Developer Toolsリファレンス 11gリリース1(11.1.1) B61386-01 |
|
戻る |
次へ |
この章では、Oracle SAML(Security Assertions Markup Language)のSoftware Development Kit(SDK)の使用について説明します。Java開発者は、Oracle SAMLを使用して、SAML 1.0/1.1およびSAML 2.0仕様に準拠する、クロスドメイン・シングル・サインオンおよびフェデレーテッド・アクセス制御を実装したソリューションを開発できます。
この章に含まれる内容は次のとおりです。
Oracle SAML SDKでは、SAML準拠のJavaセキュリティ・サービスの開発を支援する、サポート・ツール、ドキュメントおよびサンプル・プログラムを含むJava APIが提供されます。Oracle SAMLは、アプレット、アプリケーション、EJB、サーブレット、JSPなどの既存のJavaソリューションに統合できます。
Oracle SAMLでは次の機能が提供されます。
SAML 1.0/1.1および2.0仕様のサポート
SAMLベースのシングル・サインオン(SSO)、属性、メタデータ、拡張クライアント・プロキシ、およびフェデレーテッド・アイデンティティ・プロファイルのサポート
この項では、Oracle SAML 1.0/1.1の環境の設定方法、Oracle SAML 1.0/1.1の使用方法、およびOracle SAML 1.0/1.1ツールキットのクラスとインタフェースについて説明します。この項に含まれる内容は次のとおりです。
Oracle SAMLのJava APIには、SAML 1.0/1.1準拠のJavaアプリケーションを開発するために次のパッケージが含まれます。
oracle.security.xmlsec.saml
このパッケージには、SAMLアサーションをサポートするクラスが含まれます。
oracle.security.xmlsec.samlp
このパッケージには、SAMLのリクエストおよびレスポンスのプロトコル(SAMLP)をサポートするクラスが含まれます。
Oracleセキュリティ開発ツールは、Oracle Application ServerとともにORACLE_HOME
にインストールされます。
この項では、Oracle SAML 1.0/1.1を使用するための環境設定について説明します。この項に含まれる内容は次のとおりです。
Oracle SAMLを使用するには、システムにJava Development Kit(JDK)バージョン1.5以上が必要です。
CLASSPATH
環境変数には、必要なjarファイルおよびclassファイルすべてのフルパスとファイル名を指定してください。次の項目をCLASSPATH
に指定します。
osdt_core.jar
osdt_cert.jar
osdt_xmlsec.jar
osdt_saml.jar
org.jaxen_1.1.1.jar
ファイル(Oracle XML Securityディストリビューションに含まれるJaxen XPathエンジン)
WindowsでCLASSPATH
を設定する手順を次に示します。
Windowsの「コントロール パネル」で「システム」を選択します。
「システムのプロパティ」ダイアログで「詳細設定」タブを選択します。
「環境変数」をクリックします。
ユーザー環境変数のセクションで「新規」をクリックし、CLASSPATH
環境変数をユーザー・プロファイルに追加します。CLASSPATH
環境変数がすでに存在している場合は、選択して「編集」をクリックします。
必要なjarファイルすべてのフルパスとファイル名をCLASSPATH
に追加します。
たとえば、CLASSPATH
は次のようになります。
%CLASSPATH%;%ORACLE_HOME%\modules\oracle.osdt_11.1.1\osdt_core.jar; %ORACLE_HOME%\modules\oracle.osdt_11.1.1\osdt_cert.jar; %ORACLE_HOME%\modules\oracle.osdt_11.1.1\osdt_xmlsec.jar; %ORACLE_HOME%\modules\oracle.osdt_11.1.1\osdt_saml.jar; %ORACLE_HOME%\modules\oracle.osdt_11.1.1\osdt_saml2.jar; %ORACLE_HOME%\modules\org.jaxen_1.1.1.jar;
「OK」をクリックします。
UNIXでは、必要なjarファイルおよびclassファイルすべてのフルパスとファイル名を含むようにCLASSPATH
環境変数を設定します。次に例を示します。
setenv CLASSPATH $CLASSPATH:$ORACLE_HOME/modules/oracle.osdt_11.1.1/osdt_core.jar: $ORACLE_HOME/modules/oracle.osdt_11.1.1/osdt_cert.jar: $ORACLE_HOME/modules/oracle.osdt_11.1.1/osdt_xmlsec.jar: $ORACLE_HOME/modules/oracle.osdt_11.1.1/osdt_saml.jar: $ORACLE_HOME/modules/oracle.osdt_11.1.1/osdt_saml2.jar: $ORACLE_HOME/modules/org.jaxen_1.1.1.jar
この項では、Oracle SAML 1.0/1.1のクラスとインタフェースの使用について説明し、コード例を示します。この項に含まれる内容は次のとおりです。
この項では、SAMLおよびSAMLP 1.0/1.1のコア・クラスの概要をコード例と一緒に説明します。
コア・クラスを次に示します。
このクラスはOracle SAMLのツールキットを初期化します。デフォルトでは、Oracle SAMLはSAML v1.0に対応するように初期化されます。特定のバージョンのSAML仕様に合せてOracle SAMLを初期化することもできます。特定のバージョンに対してinitialize
メソッドをコールしても、以前に初期化されたバージョンはそのままになります。例9-1に、SAMLのツールキットをSAML v1.0とSAML v1.1に対して初期化する方法を示します。
このクラスは、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
...
}
このクラスは、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
...
}
このクラスは、SAMLプロトコル・スキーマのResponse
要素を表します。
例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
...
}
この項では、Oracle SAML 1.0/1.1のサポート・クラスとインタフェースの概要を説明します。
このインタフェースは、アルゴリズム、ネームスペースおよびオブジェクトのURI文字列定数を定義します。次のネーミング規則が使用されます。
SAML 1.0仕様に定義されているアクションのネームスペースURIは、action_
で始まります。
SAML 1.0仕様に定義されている認証メソッドのネームスペースURIは、authentication_method_
で始まります。
SAML 1.0仕様に定義されている確認メソッドのネームスペースURIは、confirmation_method_
で始まります。
ネームスペースURIはns_
で始まります。
このクラスは、すべてのSAMLおよびSAML拡張メッセージのベース・クラスです。署名することができ、XML-DSIG(デジタル署名)構造体を含むことが可能です。
Oracle SAML 1.0/1.1のJava APIリファレンス(Javadoc)は、次のドキュメントで参照できます。
Oracle Fusion Middleware SAML 1.0/1.1 Java API Reference for Oracle Security Developer Tools
Oracleセキュリティ開発ツールを使用したサンプル・プログラムについては、Oracle Technology Network Webサイト(http://www.oracle.com/technology/sample_code/products/id_mgmt/index.html
)を参照してください。
この項では、Oracle SAML 2.0の環境の設定方法、Oracle SAML 2.0の使用方法、およびOracle SAML 2.0ツールキットのクラスとインタフェースについて説明します。この項に含まれる内容は次のとおりです。
Oracle SAMLのJava APIには、SAML 2.0準拠のJavaアプリケーションを開発するために次のパッケージが含まれます。
oracle.security.xmlsec.saml2.core
このパッケージには、SAMLアサーションをサポートするクラスが含まれます。
oracle.security.xmlsec.saml2.protocol
このパッケージには、SAMLのリクエストおよびレスポンスのプロトコル(SAMLP)をサポートするクラスが含まれます。
oracle.security.xmlsec.saml2.ac
このパッケージには、SAML認証コンテキストの基本タイプをサポートするクラスが含まれます。
oracle.security.xmlsec.saml2.ac.classes
このパッケージには、SAML認証コンテキストの各種クラスをサポートするクラスが含まれます。
oracle.security.xmlsec.saml2.metadata
このパッケージには、SAMLメタデータをサポートするクラスが含まれます。
oracle.security.xmlsec.saml2.profiles.attributes
このパッケージには、各種のSAML属性プロファイルをサポートするクラスが含まれます。
oracle.security.xmlsec.saml2.profiles.sso.ecp
このパッケージには、SAML ECP SSOプロファイルをサポートするクラスが含まれます。
Oracleセキュリティ開発ツールは、Oracle Application ServerとともにORACLE_HOME
にインストールされます。
この項では、Oracle SAML 2.0を使用するための環境設定について説明します。この項に含まれる内容は次のとおりです。
Oracle SAMLを使用するには、システムにJava Development Kit(JDK)バージョン1.5以上が必要です。
CLASSPATH
環境変数には、必要なjarファイルおよびclassファイルすべてのフルパスとファイル名を指定してください。次の項目をCLASSPATH
に指定します。
osdt_core.jar
osdt_cert.jar
osdt_xmlsec.jar
osdt_saml.jar
org.jaxen_1.1.1.jar
ファイル(Oracle XML Securityディストリビューションに含まれるJaxen XPathエンジン)
WindowsでCLASSPATH
を設定する手順を次に示します。
Windowsの「コントロール パネル」で「システム」を選択します。
「システムのプロパティ」ダイアログで「詳細設定」タブを選択します。
「環境変数」をクリックします。
ユーザー環境変数のセクションで「新規」をクリックし、CLASSPATH
環境変数をユーザー・プロファイルに追加します。CLASSPATH
環境変数がすでに存在している場合は、選択して「編集」をクリックします。
必要なjarファイルすべてのフルパスとファイル名をCLASSPATH
に追加します。
たとえば、CLASSPATH
は次のようになります。
%CLASSPATH%;%ORACLE_HOME%\modules\oracle.osdt_11.1.1\osdt_core.jar; %ORACLE_HOME%\modules\oracle.osdt_11.1.1\osdt_cert.jar; %ORACLE_HOME%\modules\oracle.osdt_11.1.1\osdt_xmlsec.jar; %ORACLE_HOME%\modules\oracle.osdt_11.1.1\osdt_saml.jar; %ORACLE_HOME%\modules\oracle.osdt_11.1.1\osdt_saml2.jar; %ORACLE_HOME%\modules\org.jaxen_1.1.1.jar;
「OK」をクリックします。
UNIXでは、必要なjarファイルおよびclassファイルすべてのフルパスとファイル名を含むようにCLASSPATH
環境変数を設定します。次に例を示します。
setenv CLASSPATH $CLASSPATH:$ORACLE_HOME/modules/oracle.osdt_11.1.1/osdt_core.jar: $ORACLE_HOME/modules/oracle.osdt_11.1.1/osdt_cert.jar: $ORACLE_HOME/modules/oracle.osdt_11.1.1/osdt_xmlsec.jar: $ORACLE_HOME/modules/oracle.osdt_11.1.1/osdt_saml.jar: $ORACLE_HOME/modules/oracle.osdt_11.1.1/osdt_saml2.jar: $ORACLE_HOME/modules/org.jaxen_1.1.1.jar
この項では、Oracle SAML 2.0のクラスとインタフェースの使用について説明し、コード例を示します。次の項目について説明します。
この項では、SAMLおよびSAMLPのコア・クラスの概要をコード例と一緒に説明します。コア・クラスを次に示します。
このクラスは、SAMLアサーション・スキーマのAssertion要素を表します。
例9-8に、新しいAssertion要素を作成して既存のXML文書に追加する方法を示します。
例9-8 Assertion要素の作成とXML文書への追加
Document doc = Instance of org.w3c.dom.Document;
Assertion assertion = new Assertion(doc);
doc.getDocumentElement().appendChild(assertion);
例9-9に、Assertion要素をXML文書から取得する方法を示します。
例9-9 XML文書からのAssertion要素の取得
// Get a list of all Assertion elements in the document NodeList assrtList = doc.getElementsByTagNameNS(SAML2URI.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.saml2.core.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 ... }
このクラスは、SAMLプロトコル・スキーマのAuthnRequest
要素を表します。
例9-10に、新しいAuthnRequest
要素を作成して既存のXML文書に追加する方法を示します。
例9-10 AuthnRequest要素の作成とXML文書への追加
Document doc = Instance of org.w3c.dom.Document;
AuthnRequest request = new AuthnRequest(doc);
doc.getDocumentElement().appendChild(response);
例9-11に、AuthnRequest
要素を既存のXML文書から取得する方法を示します。
例9-11 XML文書からのAuthnRequest要素の取得
Document doc = Instance of org.w3c.dom.Document;
// Get a list of all AuthnRequest elements in the document
NodeList reqList =
doc.getElementsByTagNameNS(SAML2URI.ns_samlp, "AuthnRequest");
if (reqList.getLength() == 0)
System.err.println("No Request elements found.");
// Convert each org.w3c.dom.Node object to a
// oracle.security.xmlsec.saml2.protocol.AuthnRequest
// object and process
for (int s = 0, n = reqList.getLength(); s < n; ++s)
{
AuthnRequest request = new AuthnRequest((Element)reqList.item(s));
// Process Request element
...
}
このクラスは、SAMLプロトコル・スキーマのResponse
要素を表します。
samlp:StatusResponseType
要素は、SAML 2.0プロトコルの拡張ポイントを表すベース型です。SAML 2.0仕様で定義される各種のプロトコルでは、samlp:Response
やsamlp:LogoutResponse
などのサブタイプを使用します。
例9-12に、Response
要素を作成して既存のXML文書に追加する方法を示します。
例9-12 Response要素の作成とXML文書への追加
Document doc = Instance of org.w3c.dom.Document;
Response response = new Response(doc);
doc.getDocumentElement().appendChild(response);
例9-13に、Response
要素を既存のXML文書から取得する方法を示します。
例9-13 Response要素の取得とXML文書への追加
Document doc = Instance of org.w3c.dom.Document;
// Get a list of all Response elements in the document
NodeList respList =
doc.getElementsByTagNameNS(SAML2URI.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.saml2.protocol.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
...
}
この項では、Oracle SAML 2.0のサポート・クラスとインタフェースの概要を説明します。内容は次のとおりです。
このインタフェースは、アルゴリズム、ネームスペースおよびオブジェクトのURI文字列定数を定義します。このインタフェースでは、次のネーミング規則が使用されます。
SAML 1.0/1.1/2.0仕様に定義されているアクションのネームスペースURIは、action_
で始まります。
SAML 1.0/1.1/2.0仕様に定義されている認証メソッドのネームスペースURIは、authentication_method_
で始まります。
SAML 1.0/1.1/2.0仕様に定義されている確認メソッドのネームスペースURIは、confirmation_method_
で始まります。
ネームスペースURIはns_
で始まります。
Oracle SAMLのJava APIリファレンス(Javadoc)は次のドキュメントで参照できます。
Oracle Fusion Middleware SAML 1.0/1.1 Java API Reference for Oracle Security Developer Tools
Oracleセキュリティ開発ツールを使用したサンプル・プログラムについては、Oracle Technology Network Webサイト(http://www.oracle.com/technology/sample_code/products/id_mgmt/index.html
)を参照してください。