Oracle® Fusion Middleware Oracle Security Developer Toolsによるアプリケーションの開発 12c (12.2.1) E72521-01 |
|
前 |
次 |
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 WebLogic ServerとともにORACLE_HOME
にインストールされます。
Oracle SAMLを使用するには、システムにJava Development Kit (JDK)バージョン1.6以上が必要です。
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エンジン)
構成の詳細は、「CLASSPATH環境変数の設定」を参照してください。
この項では、Oracle SAML 1.0/1.1のクラスとインタフェースの使用について説明し、コード例を示します。この項の内容は、次のとおりです。
SAMLアサーション、リクエストおよびレスポンスはOracle SAML APIを使用して作成されます。
この項では、SAMLおよびSAMLP 1.0/1.1のコア・クラスの概要をコード例と一緒に説明します。
内容は次のとおりです。
このクラスはOracle SAMLのツールキットを初期化します。デフォルトでは、Oracle SAMLはSAML v1.0に対応するように初期化されます。特定のバージョンのSAML仕様に合せてOracle SAMLを初期化することもできます。特定のバージョンに対してinitialize
メソッドをコールしても、以前に初期化されたバージョンはそのままになります。
次の例に、SAMLのツールキットをSAML v1.0とSAML v1.1に対して初期化する方法を示します。
// initializes for SAML v1.1 SAMLInitializer.initialize(1, 1); // initializes for SAML v1.0, done by default SAMLInitializer.initialize(1, 0);
このクラスは、SAMLアサーション・スキーマのAssertion
要素を表します。
次の例に、新しいAssertion
要素を作成して既存のXML文書に追加する方法を示します。
Document doc = Instance of org.w3c.dom.Document;
Assertion assertion = new Assertion(doc);
doc.getDocumentElement().appendChild(assertion);
次の例に、Assertion
要素をXML文書から取得する方法を示します。
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
要素を表します。
次の例に、新しいRequest
要素を作成して既存のXML文書に追加する方法を示します。
Document doc = Instance of org.w3c.dom.Document;
Request request = new Request(doc);
doc.getDocumentElement().appendChild(request);
次の例に、Request
要素を既存のXML文書から取得する方法を示します。
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
要素を表します。
次の例に、Response
要素を作成して既存のXML文書に追加する方法を示します。
Document doc = Instance of org.w3c.dom.Document;
Response response = new Response(doc);
doc.getDocumentElement().appendChild(response);
次の例に、Response要素を既存のXML文書から取得する方法を示します。
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_
で始まります。
この項では、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 WebLogic ServerとともにORACLE_HOME
にインストールされます。
Oracle SAMLを使用するには、システムにJava Development Kit (JDK)バージョン1.6以上が必要です。
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エンジン)
たとえば、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;
構成の詳細は、「CLASSPATH環境変数の設定」を参照してください。
この項では、Oracle SAML 2.0のクラスとインタフェースの使用について説明し、コード例を示します。これらの項目が含まれます。
Oracle SAML 2.0 APIのコア・クラスにより、アサーション、リクエストおよびレスポンスを作成することができます。
この項では、SAMLおよびSAMLPのコア・クラスの概要をコード例と一緒に説明します。内容は次のとおりです。
このクラスは、SAMLアサーション・スキーマのAssertion要素を表します。
次の例に、新しいAssertion要素を作成して既存のXML文書に追加する方法を示します。
Document doc = Instance of org.w3c.dom.Document;
Assertion assertion = new Assertion(doc);
doc.getDocumentElement().appendChild(assertion);
次の例に、Assertion要素をXML文書から取得する方法を示します。
// 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
要素を表します。
次の例に、新しいAuthnRequest
要素を作成して既存のXML文書に追加する方法を示します。
Document doc = Instance of org.w3c.dom.Document;
AuthnRequest request = new AuthnRequest(doc);
doc.getDocumentElement().appendChild(response);
次の例に、AuthnRequest
要素を既存のXML文書から取得する方法を示します。
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
などのサブタイプを使用します。
次の例に、Response
要素を作成して既存のXML文書に追加する方法を示します。
Document doc = Instance of org.w3c.dom.Document;
Response response = new Response(doc);
doc.getDocumentElement().appendChild(response);
次の例に、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_
で始まります。