8 Oracle SAML
Java開発者は、Oracle SAMLを使用して、SAML 1.0/1.1およびSAML 2.0仕様に準拠する、クロスドメイン・シングル・サインオンおよびフェデレーテッド・アクセス制御を実装したソリューションを開発できます。
この章のトピックは、次のとおりです:
- Oracle SAMLの機能と利点
Oracle SAML SDKでは、SAML準拠のJavaセキュリティ・サービスの開発を支援する、サポート・ツール、ドキュメントおよびサンプル・プログラムを含むJava APIが提供されます。Oracle SAMLは、アプレット、アプリケーション、EJB、サーブレット、JSPなどの既存のJavaソリューションに統合できます。 - Oracle SAML 1.0/1.1
Oracle SAML 1.0/1.1は、SAML 1.0/1.1仕様に準拠しています。Oracle SAML 1.0/1.1ツールキットの環境を設定して、そのクラスとインタフェースを使用できます。 - Oracle SAML 2.0
Oracle SAML 2.0は、SAML 2.0仕様に準拠しています。Oracle SAML 2.0ツールキットの環境を設定して、そのクラスとインタフェースを使用できます。
8.1 Oracle SAMLの機能と利点
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
8.2 Oracle SAML 1.0/1.1
Oracle SAML 1.0/1.1は、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
とoracle.security.xmlsec.samlp
が含まれています。 - Oracle SAML 1.0/1.1の環境設定
Oracle SAMLの環境を設定するには、Oracle Security Developer ToolsとJava Development Kit (JDK)をインストールし、必要なすべてのjarファイルおよびclassファイルへのCLASSPATH
変数を設定します。 - Oracle SAML 1.xのクラスおよびインタフェース
Oracle SAML 1.0/1/1には、SAMLアサーション、リクエストおよびレスポンスを作成するための複数のコア・クラスが含まれています。アルゴリズム、ネームスペースおよびオブジェクトのURI文字列定数を定義するサポート・インタフェースが含まれています。また、すべてのSAMLおよびSAML拡張メッセージのベース・クラスであるサポート・クラスも含まれています。 - Oracle SAML 1.0/1.1のJava APIリファレンス
Oracle SAML 1.0/1.1 APIで利用可能なクラス、インタフェースおよびメソッドについては、Oracle Fusion Middleware Oracle Security Developer Tools Java APIリファレンスを参照してください。
親トピック: Oracle SAML
8.2.1 Oracle SAML 1.0/1.1のパッケージ
Oracle SAML Java APIには、SAML 1.0/1.1準拠のJavaアプリケーションを作成するためのパッケージであるoracle.security.xmlsec.saml
とoracle.security.xmlsec.samlp
が含まれています。
oracle.security.xmlsec.saml
このパッケージには、SAMLアサーションをサポートするクラスが含まれます。
oracle.security.xmlsec.samlp
このパッケージには、SAMLのリクエストおよびレスポンスのプロトコル(SAMLP)をサポートするクラスが含まれます。
親トピック: Oracle SAML 1.0/1.1
8.2.2 Oracle SAML 1.0/1.1の環境設定
Oracle SAMLの環境を設定するには、Oracle Security Developer ToolsとJava Development Kit (JDK)をインストールし、必要なすべてのjarファイルおよびclassファイルへのCLASSPATH
変数を設定します。
Oracle Security Developer Toolsは、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
8.2.3 Oracle SAML 1.xのクラスおよびインタフェース
Oracle SAML 1.0/1/1には、SAMLアサーション、リクエストおよびレスポンスを作成するための複数のコア・クラスが含まれています。アルゴリズム、ネームスペースおよびオブジェクトのURI文字列定数を定義するサポート・インタフェースが含まれています。また、すべてのSAMLおよびSAML拡張メッセージのベース・クラスであるサポート・クラスも含まれています。
この項では、Oracle SAML 1.0/1.1のクラスとインタフェースの使用について説明し、コード例を示します。この項の内容は、次のとおりです。
8.2.3.1 Oracle SAML 1.xのコア・クラス
SAMLアサーション、リクエストおよびレスポンスはOracle SAML APIを使用して作成されます。
この項では、SAMLおよびSAMLP 1.0/1.1のコア・クラスの概要をコード例と一緒に説明します。
内容は次のとおりです。
8.2.3.1.1 oracle.security.xmlsec.saml.SAMLInitializerクラスの使用方法
このクラスは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);
親トピック: Oracle SAML 1.xのコア・クラス
8.2.3.1.2 oracle.security.xmlsec.saml.Assertionクラスの使用方法
このクラスは、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
...
}
親トピック: Oracle SAML 1.xのコア・クラス
8.2.3.1.3 oracle.security.xmlsec.samlp.Requestクラスの使用方法
このクラスは、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
...
}
親トピック: Oracle SAML 1.xのコア・クラス
8.2.3.1.4 oracle.security.xmlsec.samlp.Responseクラスの使用方法
このクラスは、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.xのコア・クラス
8.2.3.2 サポート・クラスとインタフェース
この項では、Oracle SAML 1.0/1.1のサポート・クラスとインタフェースの概要を説明します。
8.2.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_
で始まります。
親トピック: サポート・クラスとインタフェース
8.2.3.2.2 oracle.security.xmlsec.saml.SAMLMessageクラスの使用方法
このクラスは、すべてのSAMLおよびSAML拡張メッセージのベース・クラスです。署名することができ、XML-DSIG(デジタル署名)構造体を含むことが可能です。
親トピック: サポート・クラスとインタフェース
8.2.4 Oracle SAML 1.0/1.1のJava APIリファレンス
Oracle SAML 1.0/1.1 APIで利用可能なクラス、インタフェースおよびメソッドについては、『Oracle Fusion Middleware Oracle Security Developer Tools Java APIリファレンス』を参照してください。
このガイドには、次のリンクからアクセスできます。
Oracle Fusion Middleware Oracle Security Developer Tools Java APIリファレンス
親トピック: Oracle SAML 1.0/1.1
8.3 Oracle SAML 2.0
Oracle SAML 2.0は、SAML 2.0仕様に準拠しています。Oracle SAML 2.0ツールキットの環境を設定して、そのクラスとインタフェースを使用できます。
次の項目が含まれます。
- Oracle SAML 2.0のパッケージ
Oracle SAML 2.0 APIには、SAMLアサーション、SAMLのリクエストとレスポンスのプロトコル(SAMLP)、およびSAML認証をサポートするクラスを含むパッケージが含まれています。 - Oracle SAML 2.0の環境設定
Oracle SAMLの環境を設定するには、Oracle Security Developer ToolsとJava Development Kit (JDK)をインストールし、必要なすべてのjarファイルおよびclassファイルへのCLASSPATH変数を設定します。 - Oracle SAML 2.0のクラスおよびインタフェース
Oracle SAML 2.0には、SAMLアサーション、リクエストおよびレスポンスを作成するための複数のコア・クラスが含まれています。アルゴリズム、ネームスペースおよびオブジェクトのURI文字列定数を定義するサポート・インタフェースが含まれています。 - Oracle SAML 2.0のJava APIリファレンス
Oracle SAML 2.0 APIで利用可能なクラス、インタフェースおよびメソッドについては、Oracle Fusion Middleware Oracle Security Developer Tools Java APIリファレンスを参照してください。
親トピック: Oracle SAML
8.3.1 Oracle SAML 2.0のパッケージ
Oracle SAML 2.0 APIには、SAMLアサーション、SAMLのリクエストとレスポンスのプロトコル(SAMLP)、およびSAML認証をサポートするクラスを含むパッケージが含まれています。
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 SAML 2.0
8.3.2 Oracle SAML 2.0の環境設定
Oracle SAMLの環境を設定するには、Oracle Security Developer ToolsとJava Development Kit (JDK)をインストールし、必要なすべてのjarファイルおよびclassファイルへのCLASSPATH変数を設定します。
Oracle Security Developer Toolsは、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
8.3.3 Oracle SAML 2.0のクラスおよびインタフェース
Oracle SAML 2.0には、SAMLアサーション、リクエストおよびレスポンスを作成するための複数のコア・クラスが含まれています。アルゴリズム、ネームスペースおよびオブジェクトのURI文字列定数を定義するサポート・インタフェースが含まれています。
この項では、Oracle SAML 2.0のクラスとインタフェースの使用について説明し、コード例を示します。これらの項目が含まれます。
8.3.3.1 Oracle SAML 2.0のコア・クラス
Oracle SAML 2.0 APIのコア・クラスにより、アサーション、リクエストおよびレスポンスを作成することができます。
この項では、SAMLおよびSAMLPのコア・クラスの概要をコード例と一緒に説明します。内容は次のとおりです。
8.3.3.1.1 oracle.security.xmlsec.saml2.core.Assertionクラスの使用方法
このクラスは、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 ... }
親トピック: Oracle SAML 2.0のコア・クラス
8.3.3.1.2 oracle.security.xmlsec.saml2.protocol.AuthnRequestクラスの使用方法
このクラスは、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
...
}
親トピック: Oracle SAML 2.0のコア・クラス
8.3.3.1.3 oracle.security.xmlsec.saml2.protocol.StatusResponseTypeクラスの使用方法
このクラスは、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のコア・クラス
8.3.3.2 サポート・クラスとインタフェース
この項では、Oracle SAML 2.0のサポート・クラスとインタフェースの概要を説明します。内容は次のとおりです。
8.3.3.2.1 oracle.security.xmlsec.saml2.util.SAML2URIインタフェースの使用方法
このインタフェースは、アルゴリズム、ネームスペースおよびオブジェクトの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_
で始まります。
親トピック: サポート・クラスとインタフェース
8.3.4 Oracle SAML 2.0のJava APIリファレンス
Oracle SAML 2.0 APIで利用可能なクラス、インタフェースおよびメソッドについては、『Oracle Fusion Middleware Oracle Security Developer Tools Java APIリファレンス』を参照してください。
Oracle SAMLのJava APIリファレンス(Javadoc)は次のドキュメントで参照できます。
Oracle Fusion Middleware Oracle Security Developer Tools Java APIリファレンス
親トピック: Oracle SAML 2.0