ヘッダーをスキップ
Oracle Communication and Mobility Server管理者ガイド
10gリリース3(10.1.3)
B50835-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

4 セキュリティとログイン・モジュールの構成

この章では、アプリケーションのセキュリティ・プロバイダを設定する方法について説明します。この章の内容は次のとおりです。

セキュリティの概要

RFC 3261および2617で説明されているように、OCMSはBasic(HTTP)認証とDigest認証の両方を実装します。OCMSでは、SIPアプリケーションとHTTPアプリケーションの両方を、RADIUS認証システムまたはOracle Internet Directory(OID)バージョン10.1.4.0.1に対して認証を行うように構成できます。

アプリケーションは、認証と認可のためのインフラストラクチャを提供します。認証を必要とするアプリケーションの親であるこのアプリケーションは、ネイティブなEnterprise JavaBeans(EJB)を使用して、子アプリケーションが認証バックエンド(RADIUSまたはOracle Internet Directory)にアクセスできるようにします。Subscriber Data Servicesが提供するフレームワークは、セキュリティを有効にしますが、セキュリティ制約自体を適用することはありません。セキュリティ制約の適用は、Proxy Registrarなどの子アプリケーションがかわりに行います。そのために、sip.xmlにおいて<security-constraint>要素で認可制約が定義されています。デプロイメント・ディスクリプタ・ファイルでのセキュリティの構成の詳細は、「SIPサーブレットでのセキュリティ」を参照してください。

Subscriber Data Servicesの各子アプリケーションは、JAAS(Java Authentication and Authorization Service)のログイン・モジュールを使用して、構成されているユーザー・リポジトリに対して認証と認可を行うよう、構成する必要があります。

OCMS JAAS準拠のログイン・モジュール

OCMSは、SIPまたはHTTPアプリケーション用のRADIUSユーザー・リポジトリに格納されているユーザー資格証明をチェックするRADIUSログイン・モジュールを提供することで、JAASのプラッガブル・アーキテクチャを利用します。

RADIUSログイン・モジュールは、RFC 4590に記述されているように、SIPアプリケーションに対してはDigest認証を提供し、RADIUSデータベースにプロビジョニングされたユーザーに対してはBasic認証のHTTPアプリケーションを提供します。

RADIUSデータベースはユーザーの認証のみを行います。ユーザーの認可は行いません。したがって、RADIUSログイン・モジュールを使用する場合は、ロールに基づく認可のために、RADIUSデータベースにプロビジョニングされた各ユーザーに対応するユーザーをOracle Databaseに作成し、適切なロールを割り当てる必要があります。RADIUSデータベースからユーザーの認証情報を削除するときは、ユーザーの認可情報(アカウントやロール関連の情報など)をOracle Databaseから手動で削除する必要もあります。このようにすることで、以降に同じユーザー名でRADIUSにプロビジョニングされるユーザーが、以前に削除されたユーザーの認可およびアカウント固有の情報を受け継いでしまうことを防ぐことができます。


注意:

ライセンスの制約のため、オープン・ソースであるRADIUSは、インストール時にOCMSとはパッケージ化されません。OCMSでRADIUSログイン・モジュールを構成する前に、JRadiusクライアント・ライブラリを手動でダウンロードしてインストールする必要があります。必要なJRadiusクライアント・ライブラリは、次のSourceforgeプロジェクトからダウンロードできます。

http://jradius-client.sourceforge.net/

JRadiusクライアント・ライブラリのダウンロード後に、Oracle Containers for J2EE(OC4J)のデプロイの$ORACLE_HOME/j2ee/home/lib/extに、jradius-client.jarファイルを手動でコピーしてから、RADIUSログイン・モジュールをデプロイするアプリケーション・サーバーを再起動してください。


これらのプラッガブルJAASログイン・モジュールを使用することで、SIPサーブレット・コンテナは、SIPリクエストを送信しているユーザー・エージェントについて、外部のデータベースで認証と認可を実行できます。このモジュールは、先にJAAS LoginModuleクラスを呼び出した後、以前に認証されていたユーザーが適切なアクセス権限を許可されていたことを確認してユーザーを認可することで、RADIUSユーザー・リポジトリに対するユーザー認証を実装します。


注意:

これらのログイン・モジュールは外部のリポジトリに対してユーザーを認証するので、OC4Jではカスタム・セキュリティ・プロバイダとみなされます。J2EEアプリケーションでのカスタム・セキュリティ・プロバイダの構成については、『Oracle Containers for J2EEセキュリティ・ガイド』を参照してください。

アプリケーションの種類と認証モード

認証の種類は、ログイン・モジュールで使用するプロトコルによって異なります。表4-1に示すように、SIP側ではDigest認証が使用され、HTTP側ではBasic認証が使用されます。


注意:

Aggregation ProxyはWebアプリケーションですが、内部のセキュリティAPIを使用して明示的に認証を実行するため、Basic認証に限定されません。結果として、Aggregation Proxyのデフォルトのセキュリティ設定(認証方式をDigestに設定)はそれ以上の構成がなくても機能します。

表4-1 プロトコルに基づく認証

プロトコル 認証モード

SIP

Digest

HTTP

Basic



注意:

この章では、アプリケーションが使用するログイン・モジュールを指定する方法、およびOCMSログイン・モジュールとRADIUSログイン・モジュール自体を構成する方法について説明します。OCMSデプロイ用のユーザー・プロビジョニング・リポジトリとして、Oracle WebCenter Suiteで使用されるLDAPデータ・ストアであるOracle Internet Directory(OID)を使用する方法は、「ユーザー・リポジトリとしてのOracle Internet Directoryの構成」を参照してください。

Subscriber Data Servicesの構成

Subscriber Data Services(subscriberdataservices)は、OCMSユーザー・リポジトリに対する認証とセキュリティが必要なすべてのSIPアプリケーションの親アプリケーションです。たとえば、Application RouterAggregation ProxyおよびProxy Registrarには、Subscriber Data Servicesが必要です。Proxy Registrarの場合は、ロケーション・サービスと、Proxy Registrarのレジストラ・コンポーネントが、Subscriber Data Servicesに依存します。Subscriber Data Servicesは、Oracle Internet Directory(OID)へのアクセスも提供します。詳細は、「セキュリティの概要」を参照してください。OCMSデプロイ用のユーザー・プロビジョニング・リポジトリとして、Oracle Internet Directory(OID)を使用する方法は、「ユーザー・リポジトリとしてのOracle Internet Directoryの構成」も参照してください。

アカウント・セキュリティ

Subscriber Data Servicesは、アカウント・ロックアウト・サービスおよびログイン失敗サービスのMBeanグループをとおしてアカウント・セキュリティを提供します。

アカウント・ロックアウト・グループには次のMBeanが含まれます。

Subscriber Data Services MBeanの場合は、AAサービスとコマンド・サービスのみを構成できます。

CommandService

CommandService MBeanの操作を使用すると、Oracle DatabaseにOCMSユーザーをプロビジョニングするために使用されるSashコマンドと同等の機能を実行できます。たとえば、アカウント管理用のコマンドのリストを表示するには、次のようにします。

  1. 「操作」タブをクリックします。getコマンドのリストが表示されます。

  2. 「returning a help String for a partial command」の「ヘルプ」をクリックします。help操作のパラメータが表示されます。

  3. 「値」フィールドにaccountと入力します。


    ヒント:

    「マルチライン・エディタを使用」をクリックして「値」フィールドを拡張すると、長いコマンド名を入力できます。

  4. 「起動操作」をクリックします。アカウント管理に関係するコマンドが表示されます(図4-1)。これらのコマンドは、Sashプロンプトでhelp accountと入力して表示されるものと同じです。詳細は、第11章「Sashでのユーザーのプロビジョニング」「サブコマンドの表示」を参照してください。

    図4-1 コマンドのヘルプの表示

    図4-1の説明が続きます
    「図4-1 コマンドのヘルプの表示」の説明

使用できるすべてのコマンドのリスト(図4-2)を表示するには、「操作」タブで「listAllCommands」を選択し、表示される「listAllCommands」ページで「起動操作」をクリックします。Sashコマンドについては、「使用できるコマンドの表示」を参照してください。Sashを使用したユーザー管理の詳細は、「ユーザーの作成」を参照してください。

図4-2 使用可能なコマンドの表示

図4-2の説明が続きます
「図4-2 使用可能なコマンドの表示」の説明

コマンド・サービスMBeanは、XDMS(XML Document Management Server)にユーザーをプロビジョニングできるようにするために、Presenceアプリケーション内にデプロイされます。「コマンド・サービス(XDMSプロビジョニング)」を参照してください。

ログイン・モジュールを使用するためのアプリケーションの構成

SIPアプリケーションのセキュリティを構成するには、最初に、デプロイメント・ディスクリプタ・ファイルsip.xml<security-constraint>要素を定義してアプリケーションが使用する認証ユーザー・リポジトリに適したセキュリティ・プロバイダ(ログイン・モジュール)を設定した後、ログイン・モジュール自体を構成します。sip.xmlでのセキュリティの設定の詳細は、「SIPサーブレットでのセキュリティ」を参照してください。

デプロイするアプリケーションごとにログイン・モジュールを構成できます。デプロイメント・プロセスの間に、Application Server Controlデプロイ・ウィザードの「デプロイ設定」ページの「セキュリティ・プロバイダ」タスクを使用して、SIPまたはHTTPアプリケーションのログイン・モジュールを構成できます。アプリケーションをデプロイした後は、「管理」ページの「セキュリティ・プロバイダ」タスクからアクセスする「ログイン・モジュールの編集」ページで、ログイン・モジュールの構成を確認または編集できます(図4-3)。

図4-3 ログイン・モジュールの変更

図4-3の説明が続きます
「図4-3 ログイン・モジュールの変更」の説明


詳細は、『Oracle Containers for J2EEデプロイメント・ガイド』の「Application Server Controlコンソールによるデプロイ」を参照してください。

system-jazn-data.xmlおよびorion-application.xmlでのログイン・モジュールの構成

また、アプリケーションのEAR(Enterprise Archive)ファイルに含まれるsystem-jazn-data.xmlファイルまたはorion-application.xmlファイルの<jazn-loginconfig>の設定を使用して、ログイン・モジュールを構成することもできます。

system-jazn-data.xmlでのログイン・モジュールの構成

system-jazn-data.xmlファイルは、ログイン・モジュールの構成のリポジトリです。このファイルの設定は、Oracle Application Server Control(図4-3)またはOracleAS JAAS Provider Admintoolを使用してログイン・モジュールを管理すると更新されます。詳細は、『Oracle Containers for J2EEセキュリティ・ガイド』を参照してください。

表4-4は、system-jazn-data.xmlで構成する、OCMSログイン・モジュールおよびRADIUSログイン・モジュールがサポートするオプションです。

表4-4 ログイン・モジュールのオプション

オプション 説明

useUTF8

trueに設定すると、ログイン・モジュールはUTF-8キャラクタ・セットでエンコードされたユーザー名とパスワードをサポートします。

authMethod

SIPアプリケーションの場合は、BasicまたはDigestを選択します。HTTPアプリケーションの場合は、Basicを選択します。

failurePeriod

アカウントがロックされる時間です(秒単位)。orion-application.xmlで指定した値は、AAサービスMBeanのDefaultLockDuration属性で指定されている値より優先されます。SIPサーブレット・コンテナに関する項も参照してください。

maxfailure

アカウントがブロックされるまでに許容される最大のログイン失敗回数。


orion-application.xmlでのOCMSログイン・モジュールの宣言

orion-application.xml<jazn-loginconfig>要素では、アプリケーションが使用するログイン・モジュールを定義します。このファイルで設定した構成は、system-jazn-data.xmlに移入されます。例4-1に、RADIUS認証システムに対して認証を行うためのログイン・モジュールの構成を示します。

orion-application.xmlでのRADIUSログイン・モジュールの宣言

例4-1は、Proxy Registrarアプリケーションのログイン・モジュールを定義しています。ただし、このアプリケーションではユーザーはRADIUSデータベースで認証される必要があります。表4-4で説明されているオプションに加えて、RADIUSログイン・モジュールでは、表4-5で説明されているオプションもサポートされています。

表4-5 RADIUSログイン・モジュールのオプション

オプション 説明

hostname

リモートRADIUSサーバーのホスト名またはIPアドレス

authPort

認証リクエストの宛先ポート

acctPort

アカウンティング・サーバーの宛先ポート

sharedSecret

RADIUSサーバーとRADIUSクライアントのみが認識するString


例4-1 orion-application.xmlでのRadiusログイン・モジュールの宣言

   <jazn-loginconfig>
       <application Key="name">
           <name>proxyregistrar</name>
           <login-modules>
               <login-module Key="class control-flag">
                   <class>
                       oracle.sdp.radiusloginmodule.RadiusLoginModule
                   </class>
                   <control-flag>required</control-flag>
                   <options>
                       <option>
                           <name>useUTF8</name>
                           <value>true</value>
                       </option>
                       <option>
                           <name>authMethod</name>
                           <value>Digest</value>
                       </option>
                       <option>
                           <name>failurePeriod</name>
                           <value>600</value>
                       </option>
                       <option>
                           <name>maxFailure</name>
                           <value>5</value>
                       </option>
                       <option>
                           <name>hostName</name>
                           <value>127.0.0.1</value>
                       </option>
                       <option>
                           <name>authPort</name>
                           <value>1812</value>
                       </option>
                       <option>
                           <name>acctPort</name>
                           <value>1813</value>
                       </option>
                       <option>
                           <name>sharedSecret</name>
                           <value>secret</value>
                       </option>
                       <option>
                           <name>radiusClientClass</name>
                           <value>oracle.sdp.radiusloginmodule.JRadiusClient</value>
                       </option>
                   </options>
               </login-module>
           </login-modules>
       </application>
   </jazn-loginconfig>

SIPサーブレットでのセキュリティ

OCMSは、SIPサーブレットAPIで説明されているように、SIPサーブレットに対して宣言およびプログラムによるセキュリティをサポートします。

宣言によるセキュリティ

SIPサーブレットAPIでは、宣言的セキュリティは、アプリケーションに対して外的な形式で、ロール、アクセス制御、認証要件などのアプリケーションのセキュリティ構造を表すことと説明されています脚注1。宣言的セキュリティを実現する手段は、デプロイメント・ディスクリプタsip.xmlです。開発者は、<security-constraint>要素を定義することで、デプロイされているアプリケーションでのセキュリティの実施方法を定義します。この要素(詳細は『Oracle Communication and Mobility Server開発者ガイド』を参照)には、次の子要素が含まれます(表4-6)。

OCMSでは、最初にこれらの要素を定義してSIPアプリケーションのセキュリティを構成します。「ログイン・モジュールを使用するためのアプリケーションの構成」で説明されているように、system-jazn-data.xmlファイルまたはorion-application.xmlファイルで、アプリケーションが使用するログイン・モジュールを設定することもできます。


注意:

sip.xmlで定義されている制約を削除してからアプリケーションを再デプロイすることにより、SIPアプリケーションで認証を行わないようにすることができます。

表4-6 <security-constraint>要素の子要素

要素 説明

<proxy-authentication>

SIP.xmlにこの要素がある場合、コンテナは、着信リクエストを認証するときに、407(プロキシ認証が必要)レスポンス・ステータス・コードでユーザー・エージェントをチャレンジするか、または401のレスポンス(未認可)を返す必要があります。

<resource-collection>

サーブレットとSIPメソッドのセットです。この要素は、認証が必要なサーブレットと、認証に使用するSIPメソッドを記述します。

<auth-constraint>

このリソース・コレクションにアクセスできるユーザー・ロールを示します。

<role-name>

セキュリティ・ロールの名前です。


プログラムによるセキュリティ

プログラムによるセキュリティでは、SipServletMessageのメソッドgetRemoteUserisUserInRoleおよびgetUserPrincipalを使用して、サーブレットの内部からセキュリティ・モデルを記述します。

P-Asserted Identityヘッダーを使用する認証

SIPサーブレットAPI 1.0では、Basic認証とDigest認証に加えて、ユーザー・エージェントは、信頼されるドメインのノード間で認証対象ユーザーのIDを伝達するSIPヘッダー・フィールドであるP-Asserted Identityを使用してユーザーを認証することが記述されています。RFC 3325で説明されているように、信頼できるドメイン内のプロキシは、信頼できるノードと信頼できないノードの両方からメッセージを受け取る場合があります。後者の場合、プロキシはDigest認証を使用してメッセージの発信者を認証します。その後、プロキシは、認証から導出したIDからP-Identity Assertedヘッダー・フィールドを作成し、他のエンティティに渡すメッセージ・ヘッダーにこのフィールドを設定します。たとえば、インバウンド・プロキシ・サーバーは、ユーザーを認証した後、受信したSIPメッセージにP-Asserted Identityヘッダー・フィールドを挿入します。P-Asserted Identityヘッダー・フィールドを挿入することで、信頼できるドメイン内の他のサーバー(Presenceサーバーなど)は再度認証を行う必要がなくなります。

OCMSは、MbeanのSipservletCommandInterceptors属性を使用して、RFC 3325で説明されている信頼できるドメインのIDのアサーションをサポートします。

Webサービス・コールおよびXCAPトラフィックの認証

OCMSは、Web CenterシステムがOCMSで提供されるAPIによってコミュニティ・メンバーシップとプレゼンスの認可を管理できるようにすることで、Oracle Web Center 11gでPresenceをサポートします。Web Centerは、コミュニティを表すコミュニティ・プロキシ・ユーザーを使用して、コミュニティ・メンバーのプレゼンス情報へのアクセスを取得します。

Web Servicesのコールは、WS-Securityによって認証されます。WS-Securityは、Web Serviceアプリケーションを認証するためにデフォルトで有効になっています。

すべてのユーザーのデフォルト・ロール

OCMS 10.1.3.4では、JAAS(Java Authentication and Authorization Service)ログイン・モジュールのすべてのユーザーのデフォルト・ロールを定義できます。たとえば、例4-2に示すように、アプリケーションのEAR(Enterprise Archive)ファイルにあるsystem-jazn-data.xmlファイルまたはorion-application.xmlファイルの<option>要素を定義して、すべてのユーザーのロールPUBLICを定義できます。

例4-2 すべてのユーザーのデフォルト・ロールの定義

<option>
   <name>defaultRole</name>
   <value>{{PUBLIC}}</value>
</option>

また、SIPアプリケーションのセキュリティを構成するには、最初にデプロイメント・ディスクリプタ・ファイルsip.xml<security-constraint>のサブ要素<auth-constraint>を定義して、アプリケーションが使用する認証ユーザー・リポジトリに適したセキュリティ・プロバイダ(ログイン・モジュール)を設定した後、ログイン・モジュール自体をMBeanブラウザで構成します。

ユーザー・リポジトリとしてのOracle Internet Directoryの構成

この項では、Oracle Internet Directory(OID)を、OCMSデプロイ用のユーザー・プロビジョニング・リポジトリとして構成する方法について説明します。この付録の内容は次のとおりです。

OIDサポートの構成の概要

OIDにプロビジョニングされているユーザーの認証および認可サービスをOCMSでサポートするには、OCMSとOIDの両方で次の構成が必要です。

OIDサポートの前提条件

OIDデータ・ストアを使用するには、次のものが必要です。

  • 適切にインストールされて構成されたOCMSのインスタンス

  • OIDバージョン10.1.4.0.1のインスタンス

  • 動的検証機能の場合、「ユーザーパスワード可逆暗号化」を選択して、ユーザー認証用に使用するLDAPレルムの可逆パスワード暗号化を有効にする必要があります。静的検証機能の場合、この構成は必要ありません。詳細は、『Oracle Internet Directory管理者ガイド』を参照してください。


注意:

OIDは、スタンドアロンのOCMSデプロイ、およびOracle Application Serverバージョン10.1.3.2以上へのOCMSのデプロイに対してのみサポートされます。ハードウェアとソフトウェアの詳細な要件およびインストール・オプションについては、Oracle Communication and Mobility Serverのインストレーション・ガイドを参照してください。

OID LDAPバックエンドの構成

OID LDAPバックエンドの場合、OID LDAPの次の属性も構成する必要があります。

JAASユーザー名のLDAPユーザー・エントリへのマッピング

JAAS(Java Authentication and Authorization Service)のユーザー名は、プロビジョニング済の各LDAPレルムに対するノードcn=Common, cd=Products, cn=OracleContextの下のorclcommonnicknameattributeの値に基づいて、LDAPのユーザーにマップされます。たとえば、特定のレルムについてこの属性をuidに設定すると、OIDで認証を行うSIPまたはWebユーザーは、認証の際にユーザー名として対応するLDAP UIDを提供する必要があることを意味します。

JAASレルムのLDAPサブスクライバへのマッピング

JAASレルムは、OIDのデプロイに対するルートcn=Common, cn=Products, cn=OracleContextノードの下のorclsubscribernicknameattributeに設定されている値に基づいて、LDAPレルムのエントリにマップされます。たとえば、あるOIDデプロイで、orclsubscribernicknameattributeの値をoに設定すると、OIDで認証を行うSIPまたはWebユーザーはo属性の値で示されるJAASレルムに属している必要があることを意味します。結果として、ユーザーsip.user@company.comは、レルムcompanyでチャレンジされます。JAASレルムに対するSIPドメインのマッピングは、SipServletContainerのDomainsAndRealms属性を通して公開されます。この例では、SIPドメインcompany.comは、JAASレルムcompanyにマップされます。JAASレルムcompanyは、さらに、orclsubscribernicknameattributeの属性(つまりo属性)に対する値がcompanyに設定されているLDAPサブスクライバにマップされます。SIPサーブレット・コンテナに関する項も参照してください。

JAASロールのLDAPグループへのマッピング

グループ・メンバーシップにより、特定のユーザーのJAASロールが決まります。JAASのロールに対するLDAPグループのマッピングは、プロビジョニング済の各LDAPレルムのノードcn=Common, cn=Products, cn=OracleContextの下にあるorclcommonnamingattributeに設定されている値に基づきます。たとえば、あるユーザーが識別名cn=Location Service, cn=groups, dc=example, dc=comのLDAPグループに属し、orclcommonnamingattributeがcnに設定されている場合、そのJAASユーザーにはLocation ServiceのJAASロールが割り当てられます。

OID LDAPツリーへのOCMSコンポーネントのインストール

OCMSコンテナがOIDインスタンスに接続できるようにするには、適切なLDAPレルムのノードcn=Products,cn=OracleContextの下のOID LDAPツリーにその製品コンテナをインストールする必要があります。指定のOIDインスタンスに接続する各OCMSインスタンスは、「OCMSインスタンスとOIDとの関連付け」の説明に従って、OCMS製品コンテナの下にアプリケーション・エントリを追加して、そのエントリに適切な権限を付与する必要があります。さらに、OIDデプロイに静的検証機能が必要な場合、OCMS製品コンテナの下にOCMS検証機能エントリも追加してください。静的検証機能のインストールについては、「OCMSの静的検証機能のインストール」で説明します。

OIDのデプロイにOCMSインスタンスを統合するには、適切なLDAPレルムの下でOID LDAPツリーにエントリを作成したり、ツリーを変更したり必要があります(例ではdc=example,dc=comの下のサンプル・レルムを使用しています)。

このような変更は、oidadminなどのグラフィカル・ツールや、適切なLDIF定義のあるldapmodifyなどのコマンドライン・ツールで行うことができます。次の各項では、OID LDAPツリーへのOCMSコンポーネントのインストールに使用できるLDIF構成データの例を示します。

OCMSインスタンスとOIDとの関連付け

次の手順を実行して、OCMSインスタンスとOIDを関連付けます。

  1. 適切なLDAPレルムのノードcn=Products,cn=OracleContextの下にOCMS製品コンテナ・エントリを追加します。

    dn: cn=OCMS,cn=Products,cn=OracleContext,dc=example,dc=com
    changetype: add
    objectclass: orclContainer
    
  2. 前述で作成したOCMS製品コンテナの下にOCMSアプリケーション・エントリを追加して、OCMSインスタンスを関連付けます。

    dn: orclApplicationCommonName=OCMSInstance1,cn=OCMS,cn=Products,cn=OracleContext, 
    dc=example,dc=com
    changetype: add
    objectclass: orclApplicationEntity
    orclappfullname: OCMS Instance 1
    userpassword: password1
    description: OCMS Instance 1 of the OCMS SIP Container
    
  3. OCMSアプリケーション・オブジェクトを検証サービス・グループのメンバーとして追加して、OCMSアプリケーションに検証サービス権限を付与します。

    dn:cn=verifierServices,cn=Groups,cn=OracleContext,
    dc=example,dc=com
    changetype: modify
    add: uniquemember
    uniquemember: orclApplicationCommonName=OCMSInstance1, cn=OCMS,cn=Products,cn=OracleContext,dc=example,dc=com
    
  4. ユーザー・データ・ストアに関して、このOID LDAPサーバーと関連付けるOCMSインスタンスごとに手順2と3を繰り返します。

OCMSの静的検証機能のインストール

次の手順を実行して、OCMSの静的検証機能をインストールします。

  1. OCMS製品コンテナの下にOCMS検証機能エントリを追加します。この手順は、動的検証機能を使用するようにOIDのデプロイが構成される場合は必要ありません。

    dn: cn=OCMSVerifierProfileEntry,cn=OCMS,cn=Products,cn=OracleContext, dc=example,dc=com
    objectclass:top
    objectclass:orclpwdverifierprofile
    cn:OCMSVerifierProfileEntry
    orclappid:ocms
    orclpwdverifierparams;authpassword: crypto:SASL/MD5 $ realm:example $ 
    usernameattribute:mail $usernamecase:lower
    

    検証機能をインストールする指定のLDAPレルムのノードcn=Common,cn=Products,cn=OracleContextの下で、前述のusernameattributeの値をorclcommonnicknameattributeに設定します。

    「JAASレルムとLDAPサブスクライバのマッピング」の説明に従って、SipServletContainerのDomainsAndRealms JMX属性に構成されている、いずれかのJAASレルムと一致するようにrealm検証機能パラメータを設定します。

    orclappid属性を、OCMSコンポーネントに割り当てられた一意のコンポーネント名に設定します。この属性の値は、「ユーザー・サービスとセキュリティ・サービスの構成」のセキュリティ・サービスのEJB構成に使用するStaticVerifierAttributeの値によって決まります。たとえば、orclappidがocmsに設定されている場合、authpassword;orclappid(authpasswordは静的な文字列)という一般的な静的検証機能のパターンに従って、StaticVerifierAttributeをauthpassword;ocmsに設定する必要があります。

    静的検証機能の詳細は、『Oracle Internet Directory管理者ガイド』を参照してください。

Subscriber Data Servicesの再パッケージング

OIDをサポートするようにOCMSを構成するには、Subscriber Data Services(subscriberdataservices.ear)とその子アプリケーションを、OCMS OC4Jのインスタンスからアンデプロイする必要があります。アプリケーションとその子アプリケーションを再デプロイする前に、ユーザー・サービスとセキュリティ・サービスのEJB構成を、次のLDAP構成パラメータをsecurityservice.jarおよびuserservice.jarejb-jar.xmlファイルに追加することで変更する必要があります。

また、ユーザー・サービスEJBの構成は、SIP URIが格納されるLDAPユーザー属性を定義するSipUriLdapAttributeも公開します。値が定義されていない場合、この属性のデフォルトはmailです。

ユーザー・サービスとセキュリティ・サービスの構成

ユーザー・プロビジョニング・ストアとしてOIDを使用してSubscriber Data Servicesアプリケーションを構成するには、次のようにします。

  1. Subscriber Data ServicesアプリケーションのEARファイル(subscriberdataservices.ear)およびその子アプリケーションを、一時ディレクトリにコピーします。

  2. Subscriber Data Servicesアプリケーションと子アプリケーションを、OC4Jインスタンスからアンデプロイします。Application Server Controlを使用したSIPアプリケーションのデプロイ、アンデプロイおよび再デプロイに関する項を参照してください。

  3. 一時ディレクトリでSubscriber Data Servicesアプリケーションを展開します。

  4. securityservice.jarを展開します。

  5. META-INFの下にあるejb-jar.xmlを編集し、次のエントリを、java.naming.security.principaljava.naming.provider.urljava.naming.security.protocolの各パラメータを含むエントリ(例4-3を参照)に置き換えます。

             <env-entry>
                <description><![CDATA[Datasource for Service activation  facades]]></description>
                <env-entry-name>SecurityServiceDSN</env-entry-name>
                <env-entry-type>java.lang.String</env-entry-type>
                <env-entry-value><![CDATA[java:jdbc/OcmsSsDs]]></env-entry-value>
             </env-entry>
             <env-entry>
                <env-entry-name>SecurityDAOImpl</env-entry-name>
                <env-entry-type>java.lang.String</env-entry-type>
                 <env-entry-value><![CDATA[com.hotsip.securityservice.dao.timesten.SecurityDAOImpl]]>
                </env-entry-value>
             </env-entry>
             <env-entry>
                <env-entry-name>StoreHashedCredentials</env-entry-name>
                <env-entry-type>java.lang.String</env-entry-type>
                <env-entry-value><![CDATA[True]]></env-entry-value>
             </env-entry>
             <env-entry>
                <description><![CDATA[Datasource for Service activation facades]]></description>
                <env-entry-name>UserServiceDSN</env-entry-name>
                <env-entry-type>java.lang.String</env-entry-type>
                <env-entry-value><![CDATA[java:jdbc/OcmsUsDs]]></env-entry-value>
             </env-entry>
             <env-entry>
                <env-entry-name>UserDAOImpl</env-entry-name>
                <env-entry-type>java.lang.String</env-entry-type>
                <env-entry-value><![CDATA[oracle.sdp.userservice.dao.timesten.UserDAOImpl]]>
                </env-entry-value>
             </env-entry>
    

    例4-3 ejb-jar.xmlのエントリ

           <env-entry>
                <description><![CDATA[DN of the OCMS LDAP application entry for this instance of OCMS.]]></description>
                <env-entry-name>java.naming.security.principal</env-entry-name>
                <env-entry-type>java.lang.String</env-entry-type>
                <env-entry-value><![CDATA[orclApplicationCommonName=OCMSInstance1,cn=OCMS,cn=Products,cn=OracleContext, dc=example,dc=com]]></env-entry-value>
             </env-entry>
             <env-entry>
                <description><![CDATA[Password for the OCMS LDAP application entry for this instance of OCMS.]]></description>
                <env-entry-name>java.naming.security.credentials</env-entry-name>
                <env-entry-type>java.lang.String</env-entry-type>
                <env-entry-value><![CDATA[{903}FOO48C7YXgS6EMBZ4I47/Xs0JsjJXuHOUlVCyJzWHXo=]]></env-entry-value>
             </env-entry>
             <env-entry>
                <description><![CDATA[LDAP Provider URL]]></description>
                <env-entry-name>java.naming.provider.url</env-entry-name>
                <env-entry-type>java.lang.String</env-entry-type>
                <env-entry-value><![CDATA[ldap://ldapusers.example.com:636]]></env-entry-value>
             </env-entry>
             <env-entry>
                <description><![CDATA[Security Protocol (e.g. ssl)]]></description>
                <env-entry-name>java.naming.security.protocol</env-entry-name>
                <env-entry-type>java.lang.String</env-entry-type>
                <env-entry-value><![CDATA[ssl]]></env-entry-value>
             </env-entry>
             <env-entry>
                <description><![CDATA[The LDAP user attribute containing the user's static verifier hash.]]></description>
                <env-entry-name>StaticVerifierAttribute</env-entry-name>
                <env-entry-type>java.lang.String</env-entry-type>
                <env-entry-value><![CDATA[authpassword;ocms]]>
                </env-entry-value>
             </env-entry>
             <env-entry>
               <description><![CDATA[The optional LDAP filter that should be applied when searching for users.]]></description>
               <env-entry-name>UserSearchFilter</env-entry-name>
               <env-entry-type>java.lang.String</env-entry-type>
               <env-entry-value><![CDATA[(&(mail=*@example.com)(orclisvisible=true))]]>
               </env-entry-value>
             </env-entry>
             <env-entry>
                <env-entry-name>SecurityDAOImpl</env-entry-name>
                <env-entry-type>java.lang.String</env-entry-type>
                <env-entry-value><![CDATA[oracle.sdp.securityservice.dao.ldap.SecurityDAOImpl]]>
                </env-entry-value>
             </env-entry>
             <env-entry>
                <env-entry-name>UserDAOImpl</env-entry-name>
                <env-entry-type>java.lang.String</env-entry-type>
                <env-entry-value><![CDATA[oracle.sdp.userservice.dao.ldap.UserDAOImpl]]>
                </env-entry-value>
             </env-entry>
    

    注意:

    java.naming.security.principaljava.naming.security.credentialsjava.naming.provider.urlの各環境エントリを、LDAPサーバーの構成で更新する必要があります。通常、java.naming.security.principalのエントリは、現在のOCMSインスタンスに関連付けられているorclApplicationEntityオブジェクトのdnに設定します。OID LDAPサーバーに対してSSLベースの接続を行う場合は、オプションのエントリjava.naming.security.protocolsslに設定する必要もあります。

    java.naming.security.credentialsの値をクリアテキストで指定するには、クリアテキストのパスワードの先頭に!を追加します(!passwordのようになります)。セキュリティを追加するには、不明瞭な形式のパスワードを使用します。

    動的検証機能を使用するように構成されたOIDデプロイでは、StaticVerifierAttributeエントリは不要であるため、削除してください。静的検証機能を使用するように構成されたOIDデプロイでは、StaticVerifierAttributeエントリを、OCMSの静的検証機能を格納するユーザー属性に設定してください。この属性の値は、通常、authpassword;orclappidです。authpasswordは静的な文字列で、orclappidは、OIDにインストールされたOCMSの静的検証機能を一意に識別するorclappid属性の値で置き換えられます。オプションのUserSearchFilter属性は、LDAPリポジトリでのユーザーの検索時に適用するLDAPフィルタの値を設定します。省略する場合、ユーザー検索フィルタは適用されません。


  6. securityservice.jarを再パッケージングします。

  7. userservice.jarを展開します。

  8. META-INFの下にあるejb-jar.xmlを編集し、次のエントリを、java.naming.security.principaljava.naming.provider.urljava.naming.security.protocolSipUriLdapAttributeの各パラメータを含むエントリ(例4-4を参照)に置き換えます。UserServiceDSNエントリを削除しないでください。

             <env-entry>
                <description><![CDATA[Datasource for Service activation facades]]></description>
                ...
                <env-entry-type>java.lang.String</env-entry-type>
                <env-entry-value><![CDATA[java:jdbc/OcmsUsDs]]></env-entry-value>
             </env-entry>
             <env-entry>
                <env-entry-name>UserDAOImpl</env-entry-name>
                <env-entry-type>java.lang.String</env-entry-type>
                <env-entry-value><![CDATA[oracle.sdp.userservice.dao.timesten.UserDAOImpl]]>
                </env-entry-value>
             </env-entry>
    

    例4-4 userservice.jarのエントリ

           <env-entry>
                <description><![CDATA[DN of the OCMS LDAP application entry for this instance of OCMS.]]></description>
                <env-entry-name>java.naming.security.principal</env-entry-name>
                <env-entry-type>java.lang.String</env-entry-type>
                <env-entry-value><![CDATA[orclApplicationCommonName=OCMSInstance1,cn=OCMS,cn=Products,cn=OracleContext, dc=example,dc=com]]></env-entry-value>
             </env-entry>
             <env-entry>
                <description>
    <![CDATA[Password for the OCMS LDAP application entry for this instance of OCMS.]]>
    </description>
                <env-entry-name>java.naming.security.credentials</env-entry-name>
                <env-entry-type>java.lang.String</env-entry-type>
                <env-entry-value><![CDATA[{903}FOO48C7YXgS6EMBZ4I47/Xs0JsjJXuHOUlVCyJzWHXo=]]></env-entry-value>         
    </env-entry>
             <env-entry>
                <description><![CDATA[LDAP Provider URL]]></description>
                <env-entry-name>java.naming.provider.url</env-entry-name>
                <env-entry-type>java.lang.String</env-entry-type>
                <env-entry-value><![CDATA[ldap://ldap.example.com:636]]></env-entry-value>
             </env-entry>
                  <env-entry>
                <description><![CDATA[The optional LDAP user attribute containing the user's SIP URI.]]></description>
                <env-entry-name>SipUriLdapAttribute</env-entry-name>
                <env-entry-type>java.lang.String</env-entry-type>
                <env-entry-value><![CDATA[mail]]></env-entry-value>
             </env-entry>
             <env-entry>
               <description><![CDATA[The optional LDAP filter that should be applied when searching for users.]]></description>
               <env-entry-name>UserSearchFilter</env-entry-name>
               <env-entry-type>java.lang.String</env-entry-type>
               <env-entry-value><![CDATA[(&(mail=*@example.com)(orclisvisible=true))]]>
               </env-entry-value>
             </env-entry>
             <env-entry>
                <description><![CDATA[Security Protocol (e.g. ssl)]]></description>
                <env-entry-name>java.naming.security.protocol</env-entry-name>
                <env-entry-type>java.lang.String</env-entry-type>
                <env-entry-value><![CDATA[ssl]]></env-entry-value>
             </env-entry>
                                                
    <env-entry>
                <env-entry-name>UserDAOImpl</env-entry-name>
                <env-entry-type>java.lang.String</env-entry-type>
                <env-entry-value><![CDATA[oracle.sdp.userservice.dao.ldap.UserDAOImpl]]>
                </env-entry-value>
             </env-entry>
    

    注意:

    java.naming.security.principaljava.naming.security.credentialsjava.naming.provider.urlの各環境エントリを、LDAPサーバーの構成で更新する必要があります。さらに、OID LDAPサーバーに対してSSLベースの接続を行う場合は、オプションのエントリjava.naming.security.protocolsslに設定する必要もあります。userserviceはオプションの環境パラメータSipUriLdapAttributeを公開します。このエントリに設定する値は、SIP URIが格納されるLDAPユーザー属性です。このエントリに値を設定しないと、属性はデフォルト値のmailになります。

  9. userservice.jarを再パッケージングします。

  10. Subscriber Data ServicesのEARファイルを再パッケージングします。

  11. 再パッケージングしたSubscriber Data Servicesアプリケーションと子アプリケーションを、OC4Jインスタンスに再デプロイします。

OIDへのOCMSユーザーのプロビジョニング

『Oracle Identity Management委任管理ガイド』で説明されているOracle Identity Management(OIM)のWebベースのOracle Delegated Administration Servicesアプリケーション(OIDDAS)を使用して、OIDにユーザー・アカウントをプロビジョニングする必要があります。

このツールを使用するには、ブラウザでhttp://<host>:<port>/oiddasと入力します。hostとportは、OIDデプロイのOracle Application Serverインスタンスのホスト名とHTTPポートです。

LDAPグループへのユーザーの追加

すべてのロールを保持するユーザーが存在するようにProxy Registrarを構成するには、デフォルトのPUBLICロールを割り当てます。

Oracle Delegated Administration Servicesを使用すると、ユーザーの識別名を、LDAPグループのuniquemember属性の値の一覧に追加することで、LDAPグループにユーザーを追加できます。詳細は、『Oracle Identity Management委任管理ガイド』を参照してください。

proxyregistrarでsip.xmlの認証制約を構成して、SIPメッセージの種類に基づいて、特定のロール(Location Serviceなど)のユーザー・メンバーシップを要求することもできます。



脚注

脚注1: SIPサーブレットAPI、バージョン1.0