22 SAML 1.1サービスの構成
サードパーティのSAMLリライイング・パーティによって要求される固有のSAML 1.1アサーション属性に件名をマッピングするカスタムSAML名前マッパーを作成する方法に関する詳細は、前述の項で説明されるトピックに加え、『WebLogicセキュリティ・サービスによるアプリケーションの開発』の非WebLogic SAML 1.1リライイング・パーティ用アサーションの作成に関する項を参照してください。
この章の内容は次のとおりです。
SAML 1.1でのシングル・サインオンの有効化: 主なステップ
SAMLによるシングル・サインオンを有効にするには、WebLogic Serverをソース・サイトまたは宛先サイトとして構成します。
ノート:
WebLogic Serverのこのリリースでは、SAML 1.1実装が変更され、SAMLレスポンスでのHttpServletResponse
URL書換えは使用されなくなりました。このため、JSESSIONID
はSAMLレスポンスに追加されません。また、この変更により、cookieをサポートしないブラウザではSAML 1.1が使用できなくなります。
HttpServletResponse
URL書換えを有効にするには、Javaシステム・プロパティweblogic.security.saml.enableURLRewriting
をtrue
に設定します。たとえば、これは、WebLogic Serverを起動するJavaコマンドで次のオプションを指定して行うことができます。
-Dweblogic.security.saml.enableURLRewriting=true
ソース・サイトの構成: 主なステップ
WebLogic Serverインスタンスをソース・サイトとして構成するには、次の主なステップを実行します:
- 使用するセキュリティ・レルムで、SAML資格証明マッピング・プロバイダV2を作成して構成します。
- レルム内でソース・サイトとして機能するサーバー・インスタンスのフェデレーション・サービスを構成します。
- 生成されるSAMLアサーションのリライイング・パーティを作成し、構成します。
- ソース・サイトへの接続にSSL証明書を使用するようにリライイング・パーティを設定する場合は、SAML資格証明マッピング・プロバイダの証明書レジストリにそれらの証明書を追加します。
シングル・サインオン用のSAML 1.1ソース・サイトの構成
WebLogic ServerインスタンスをSAML 1.1ソース・サイトとして構成する方法を学習します。
SAML 1.1資格証明マッピング・プロバイダの構成
使用するセキュリティ・レルムで、SAML資格証明マッピング・プロバイダV2のインスタンスを作成します。SAML資格証明マッピング・プロバイダは、デフォルト・セキュリティ・レルムの一部ではありません。「SAML 1.1用のSAML資格証明マッピング・プロバイダの構成」を参照してください。
SAML資格証明マッピング・プロバイダをSAML認証局として構成するには、「発行者URI」、「名前修飾子」などの属性を設定します。
ソース・サイト・フェデレーション・サービスの構成
SAML 1.1ソース・サイトとしてのWebLogic Serverインスタンスの構成は、FederationServicesMBean
によって制御されます。FederationServicesMBean
には、WebLogic Scripting ToolまたはWebLogic Server管理コンソール(「環境」→「サーバー」→「サーバー名」→「構成」→「フェデレーション・サービス」→「SAML 1.1ソース・サイト」ページ)を使用してアクセスします。Oracle WebLogic Server管理コンソール・オンライン・ヘルプのSAML 1.1ソース・サービスの構成に関する項を参照してください。
SAMLソース・サイトの属性は以下のように構成します。
-
SAMLソース・サイトの有効化: 「ソース・サイトの有効化」をtrueに設定すると、WebLogicサーバー・インスタンスがSAMLソース・サイトとして機能できるようになります。
-
ソース・サイトのURLおよびサービスURIの設定: SAMLソース・サイトのURLを設定します。これは、サイト間転送サービスおよびアサーション検索サービスをホストするURLです。ソース・サイトURLは、ソースIDとして16進数およびBase64でエンコードされます。ブラウザ/アーティファクト・プロファイルのSAMLアサーティング・パーティを構成するときに、このエンコードされたソースIDを指定します。
サイト間転送サービスおよび(ブラウザ/アーティファクト・プロファイルをサポートするために)アサーション検索サービスのURIを指定します。(また、リライイング・パーティを構成するときには、サイト間転送サービスURIも指定します。)
デフォルトURIの
FederationServicesMBean.IntersiteTransferURIs
の値は、表22-1に示されています。表22-1 サイト間転送URI
デフォルトURI値 説明 /samlits_ba/its
BASIC認証、POSTまたはアーティファクト・プロファイル
/samlits_ba/its/post
BASIC認証、POSTプロファイル
/samlits_ba/its/artifact
BASIC認証、アーティファクト・プロファイル
/samlits_cc/its
クライアント証明書認証、POSTまたはアーティファクト・プロファイル
/samlits_cc/its/post
クライアント証明書認証、POSTプロファイル
/samlits_cc/its/artifact
クライアント証明書認証、アーティファクト・プロファイル
サイト間転送URIテキスト・ボックスを使用すると、デフォルト値をそのまま使用するか、または選択内容に応じて値を変更できます。各URIにはアプリケーション・コンテキストが含まれ、後には
/its
、/its/post
、または/its/artifact
が続きます。提供されるアプリケーション・コンテキストは、/samlits_ba
(BASIC認証)または/samlits_cc
(クライアント証明書認証)です。必要に応じて、/yourapplication/its
などのアプリケーション固有のコンテキストも指定できますが、たいていの場合はデフォルトが最も使いやすい構成オプションです。これらのURIを
/samlits_ba/its
に指定し、リダイレクトが発生してソース・サイト上のユーザー・セッションがタイムアウトした場合、BASIC認証ダイアログが表示されます。かわりにFORMダイアログを使用する場合、URIは、ユーザーを認証して実際のITS URIに転送するカスタムWebアプリケーションを示します。 -
署名証明書の追加: SAMLソース・サイトでは、アサーションの署名に使用する信頼性のある証明書が必要になります。キーストアにこの証明書を追加して、この証明書へのアクセスに使用される資格証明(別名とパスワード)を入力します。署名用の別名とパスワードが指定されていない場合、デフォルトではサーバーのSSL IDキー/証明書が使用されます。
-
アサーション検索サービス用のSSLの構成:
FederationServicesMBean.arsRequiresSSL
をtrue
に設定することで、アサーション検索サービスへのすべてのアクセスでSSLを使用するようにできます。arsRequiresSSL
とARSRequiresTwoWaySSL
の両方をtrue
に設定することで、アサーション検索サービスに対する双方向SSL認証を要求できます。
リライイング・パーティの構成
SAMLリライイング・パーティは、SAMLソース・サイトによって生成されるSAMLアサーションの情報によって変わるエンティティです。WebLogic Serverで各リライイング・パーティに対し別個にSAMLアサーションを生成する方法を構成するか、フェデレーション・サービス・ソース・サイトの構成で設定されたデフォルトを使用してアサーションを生成します。
リライイング・パーティは、WebLogic Server管理コンソールの「セキュリティ・レルム」→「RealmName」→「プロバイダ」→資格証明マッパー→「SAMLCredentialMapperName」→「管理」→「リライイング・パーティ」ページで構成します。Oracle WebLogic Server管理コンソール・オンライン・ヘルプのSAML 1.1リライイング・パーティの作成に関する項とSAML 1.1リライイング・パーティの構成に関する項を参照してください。
WebLogic Scripting Toolを使用してリライイング・パーティを構成することもできます。「WLSTを使用したリライイング・パーティとアサーティング・パーティの構成」を参照してください。
次のトピックでは、リライイング・パーティを構成する方法を説明します。
サポートされるプロファイルの構成
SAMLリライイング・パーティを構成するときに、SAML SSO用としてアーティファクト・プロファイルまたはPOSTプロファイルのサポートを指定できます。かわりに、Webサービス・セキュリティ用としてWSS/Holder-of-KeyプロファイルまたはWSS/Sender-Vouchesプロファイルをサポートするリライイング・パーティを構成することもできます。SAML宛先サイトがサポートするプロファイルのサポートを構成してください。
POSTプロファイルをサポートする場合は、必要に応じて、リライイング・パーティのPOSTプロファイル・アサーションで使用するフォームを作成し、そのパス名を「POSTフォーム」属性に設定します。
アサーション・コンシューマのパラメータ
各SAMLリライイング・パーティに対して、宛先サイトへのリダイレクト時にACS URLに付加される1つまたは複数の問合せパラメータを任意で構成できます。POSTプロファイルの場合、用時にこデフォルトのPOSTフォームの使れらのパラメータがフォーム変数として組み込まれます。カスタムPOSTフォームの使用中は、パラメータは名前と値のマップとして使用可能になりますが、フォームがPOSTされるデータにパラメータが含まれるように作成される場合と、そうでない場合があります。
別のWebLogic Serverインスタンスと通信するWebLogic ServerブラウザSSO構成の場合、リライイング・パーティACSパラメータのSAMLアサーティング・パーティのID (APID)を設定します。
ブラウザ・プロファイル構成が機能するためにV2プロバイダとこのパラメータの併用が必要です。つまり、ACSはアサーティング・パーティID (APID)をリクエスト受信時のパラメータとして検索し、これを使用して他の処理を実行する前に構成を参照します。
また、APIDパラメータを使用すると、ブラウザSSOのターゲットURLパラメータを指定する必要がなくなります。ターゲットURLはWebサービスの構成に使用されます。
デフォルトのアサーション・ストアの置換え
WebLogic Serverでは、単純なアサーション・ストアを使用して、生成されるアサーションの永続性を保持します。このアサーション・ストアを、weblogic.security.providers.saml.AssertionStoreV2
を実装するカスタム・アサーション・ストア・クラスに置き換えることができます。FederationServicesMBean.AssertionStoreClassName
属性を使用して、デフォルトのクラスではなく、カスタム・アサーション・ストア・クラスを使用するようにWebLogic Serverを構成します。FederationServicesMBean.AssertionStoreProperties
属性を使用して、カスタム・アサーション・ストア・クラスのinitStore()
メソッドに渡されるプロパティを構成できます。これらの属性は、WebLogic Server管理コンソールの「環境: サーバー」→「ServerName」→「構成」→「フェデレーション・サービス」→「SAML 1.1ソース・サイト」ページで構成します。
シングル・サインオン用のSAML 1.1宛先サイトの構成
WebLogic ServerをSAML宛先サイトとして構成する方法を学習します。
SAML IDアサーション・プロバイダの構成
使用するセキュリティ・レルムで、SAML IDアサーション・プロバイダV2のインスタンスを作成し、構成します。SAML IDアサーション・プロバイダは、デフォルト・セキュリティ・レルムの一部ではありません。「SAML 1.1用のSAML IDアサーション・プロバイダの構成」を参照してください。
宛先サイト・フェデレーション・サービスの構成
WebLogicをSAML宛先サイトとして構成する前に、まず使用するセキュリティ・レルムで、SAML IDアサーション・プロバイダV2のインスタンスを作成する必要があります。SAML宛先サイトとしてのWebLogic Serverインスタンスの構成はFederationServicesMBean
によって制御されます。FederationServicesMBean
には、WebLogic Scripting ToolまたはWebLogic Server管理コンソール(「環境: サーバー」→「ServerName」→「構成」→「フェデレーション・サービス」→「SAML 1.1宛先サイト」ページ)を使用してアクセスします。
SAML宛先サイトの属性は次のように構成します。
アサーション・コンシューマURIの設定
SAMLアサーション・コンシューマ・サービスのURIを設定します。ソース・サイトからアサーションを受信するURLです。これにより、宛先サイトはアサーションを使用してユーザーを認証できます。アサーション・コンシューマURIは、リライイング・パーティの構成でも指定されます。
許可されたターゲット・ホストの指定
FederationServicesMBean.AllowedTargetHosts
属性を使用して、ターゲットURLがリダイレクトされる許可された宛先ホストのリストを指定します。許可されたターゲット・ホストが指定されておらず、リストが空の場合、ターゲットのリダイレクトURLはチェックされません。
アサーション・コンシューマ・サービス用のSSLの構成
FederationServicesMBean.acsRequiresSSL
をtrue
に設定することで、アサーション・コンシューマ・サービスへのすべてのアクセスでSSLを使用するように設定できます。
SSLクライアントID証明書の追加
SSLクライアントIDは、アーティファクト・プロファイルのソース・サイトでARSにアクセスするために使用します。キーストアにこの証明書を追加して、この証明書へのアクセスに使用される資格証明(別名とパスワード)を入力します。
使い捨てポリシーと使用済アサーション・キャッシュまたはカスタム・アサーション・キャッシュの構成
必要に応じて、各POSTプロファイル・アサーションの使用を1回のみに設定できます。アサーションの使い捨てポリシーをサポートできるように、WebLogic Serverには使用済みのアサーションのキャッシュが保持されています。このアサーション・キャッシュを、weblogic.security.providers.saml.SAMLUsedAssertionCache
を実装するカスタム・アサーション・キャッシュ・クラスに置き換えられます。FederationServicesMBean.SAMLUsedAssertionCache
属性を使用して、デフォルトのクラスではなく、カスタム・アサーション・キャッシュ・クラスを使用するようにWebLogic Serverを構成します。FederationServicesMBean.UsedAssertionCacheProperties
属性を使用して、カスタム・アサーション・キャッシュ・クラスのinitCache()
メソッドに渡されるプロパティを構成できます。これらの属性は、WebLogic Server管理コンソールの「環境」→「サーバー」→「ServerName」→「構成」→「フェデレーション・サービス」→「SAML 1.1宛先サイト」ページで構成できます。
アサーティング・パーティの構成
SAMLアサーティング・パーティとは、信頼できるSAMLオーソリティです(SAMLアサーションの形式でセキュリティ情報を厳格にアサートできるエンティティ)。
アサーティング・パーティは、WebLogic Server管理コンソールの「セキュリティ・レルム」→「RealmName」→「プロバイダ」→「認証」→「SAMLIdentityAsserterV2」→「管理: アサーティング・パーティ」ページで構成します。Oracle WebLogic Server管理コンソール・オンライン・ヘルプのSAML 1.1アサーティング・パーティの作成に関する項およびSAML 1.1アサーティング・パーティの構成に関する項を参照してください、
WebLogic Scripting Toolを使用してアサーティング・パーティを構成することもできます。「WLSTを使用したリライイング・パーティとアサーティング・パーティの構成」を参照してください。
次のトピックでは、サーティング・パーティの構成についての詳細を説明します。
サポートされるプロファイルの構成
SAMLアサーティング・パーティを構成するときに、SAML SSO用としてアーティファクト・プロファイルまたはPOSTプロファイルのサポートを指定できます。かわりに、Webサービス・セキュリティ用としてWSS/Holder-of-KeyプロファイルまたはWSS/Sender-Vouchesプロファイルをサポートするアサーティング・パーティを構成することもできます。
ソース・サイトITSパラメータの構成
各SAMLアサーティング・パーティでは、ソース・サイトにリダイレクトするときに追加されるゼロ以上のオプション問合せパラメータを構成します。
別のWebLogic Serverインスタンスと通信するWebLogic ServerブラウザSSO構成の場合、アサーティング・パーティITSパラメータのSAMLリライイング・パーティのID (RPID)を設定する必要があります。
ブラウザ・プロファイル構成が機能するためにV2プロバイダとこのパラメータの併用が必要です。つまり、ITSはRPIDをリクエスト受信時のパラメータとして検索し、これを使用して他の処理を実行する前に構成を参照します。
また、RPIDパラメータを使用すると、WebLogic Server対WebLogic ServerブラウザSSO構成専用にターゲットURLパラメータを指定する必要がなくなります。ターゲットURLはWebサービスの構成に使用されます。
WLSTを使用したリライイング・パーティとアサーティング・パーティの構成
SAMLパートナ(リライイング・パーティとアサーティング・パーティ)はレジストリに保持されます。WebLogic Server管理コンソールまたはWebLogic Scripting Toolを使用してSAMLパートナを構成できます。
次の例では、WLSTをオンライン・モードで使用して2つのリライイング・パーティを構成する方法を示します。この例では、リライイング・パーティのアサーション・コンシューマ・サービスのパラメータにSAMLアサーティング・パーティのID (APID)を設定しています。別のWebLogic Serverインスタンスと通信するWebLogic ServerブラウザSSO構成の場合、リライイング・パーティACSパラメータのSAMLアサーティング・パーティのID (APID)を設定する必要があります。(アサーティング・パーティITSパラメータにSAMLリライイング・パーティのID (RPID)も設定します。)
この例で参照される証明書の別名demoidentity
は、ドメインのソース・サイトのデモSSL IDからのものです。
APIDは、WebLogic Server対WebLogic ServerブラウザSSO構成にのみ必要になります。ブラウザ・プロファイル構成が機能するためにV2プロバイダとこのパラメータの併用が必要です。
例22-1 WLSTを使用したリライイング・パーティの作成
connect('','','t3://host:port') Please enter your username : Please enter your password : ... rlm=cmo.getSecurityConfiguration().getDefaultRealm() cm=rlm.lookupCredentialMapper('samlv2cm') rp=cm.newRelyingParty() rp.setDescription('test post profile') rp.setProfile('Browser/POST') rp.setAssertionConsumerURL('http://domain.example.com:7001/saml_destination/acs') rp.setAssertionConsumerParams(array(['APID=ap_00001'],String)) rp.setSignedAssertions(true) rp.setEnabled(true) cm.addRelyingParty(rp) rp=cm.newRelyingParty() rp.setDescription('test artifact profile') rp.setProfile('Browser/Artifact') rp.setAssertionConsumerURL('http://domain.example.com:7001/saml_destination/acs') rp.setAssertionConsumerParams(array(['APID=ap_00002'],String)) rp.setARSUsername('foo') rp.setARSPassword('password') rp.setSSLClientCertAlias('demoidentity') rp.setEnabled(true) cm.addRelyingParty(rp) disconnect() exit()
次の例では、既存のアサーティング・パーティを編集する方法を示します。この例では、アサーティング・パーティIDを使用してアサーティング・パーティを取得し、アサーション検索URLを設定しています。
例22-2 WLSTを使用したアサーティング・パーティの編集
connect('','','t3://host:port') Please enter your username :adminuser Please enter your password : ... rlm=cmo.getSecurityConfiguration().getDefaultRealm() ia=rlm.lookupAuthenticationProvider('samlv2ia') ap=ia.getAssertingParty('ap_00002') ap.setAssertionRetrievalURL('https://hostname:7002/samlars/ars') ia.updateAssertingParty(ap) disconnect() exit()