この章では、アプリケーションのセキュリティ・プロバイダを設定する方法について説明します。この章の内容は次のとおりです。
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は、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プロジェクトからダウンロードできます。
JRadiusクライアント・ライブラリのダウンロード後に、Oracle Containers for J2EE(OC4J)のデプロイの |
これらのプラッガブル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に設定)はそれ以上の構成がなくても機能します。 |
注意: この章では、アプリケーションが使用するログイン・モジュールを指定する方法、およびOCMSログイン・モジュールとRADIUSログイン・モジュール自体を構成する方法について説明します。OCMSデプロイ用のユーザー・プロビジョニング・リポジトリとして、Oracle WebCenter Suiteで使用されるLDAPデータ・ストアであるOracle Internet Directory(OID)を使用する方法は、「ユーザー・リポジトリとしてのOracle Internet Directoryの構成」を参照してください。 |
Subscriber Data Services(subscriberdataservices)は、OCMSユーザー・リポジトリに対する認証とセキュリティが必要なすべてのSIPアプリケーションの親アプリケーションです。たとえば、Application Router、Aggregation 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が含まれます。
AAサービス
AAサービスMBeanは、ログイン失敗サービスがアカウントをロックするために使用します。このMBeanは、MathFunctionモデルMBeanに依存します。AAサービスMBeanは、MathFunctionモデルMBeanを利用することで、現在のログイン試行失敗回数に基づいてアカウントの次のロック期間を計算します。
注意: アカウントのロックは、OC4Jを再起動しても維持されます。 |
表4-2では、AAサービスMBeanの属性について説明します。
表4-2 AAサービスMBeanの属性
属性 | 値 |
---|---|
MathFunction |
現在のログイン試行失敗回数に基づいてアカウントの次のロック期間を計算するために使用する演算関数の種類。演算関数( |
DefaultLockDuration |
演算関数が使用できない場合に使用するロック期間(秒)。デフォルト値は600です。 |
JNDIName |
AAサービスのJNDI名。この値は読取り専用です。 |
SecurityServiceName |
ユーザー・アカウントをロック解除するために使用されるサービス・オブジェクトにバインドされているJNDI名。この値は読取り専用です。 |
Constant(読取り専用)
現在のログイン試行失敗回数に基づいてアカウントの次のロック期間を計算するためにMathFunction MBeanが使用する定数関数。
Exponential
現在のログイン試行失敗回数に基づいてアカウントの次のロック期間を計算するためにMathFunction MBeanが使用する指数演算関数。
Linear
現在のログイン試行失敗回数に基づいてアカウントの次のロック期間を計算するためにMathFunction MBeanが使用する線形演算関数。
Subscriber Data Services MBeanの場合は、AAサービスとコマンド・サービスのみを構成できます。
CommandService MBeanの操作を使用すると、Oracle DatabaseにOCMSユーザーをプロビジョニングするために使用されるSashコマンドと同等の機能を実行できます。たとえば、アカウント管理用のコマンドのリストを表示するには、次のようにします。
「操作」タブをクリックします。get
コマンドのリストが表示されます。
「returning a help String for a partial command」の「ヘルプ」をクリックします。help
操作のパラメータが表示されます。
「値」フィールドにaccountと入力します。
ヒント: 「マルチライン・エディタを使用」をクリックして「値」フィールドを拡張すると、長いコマンド名を入力できます。 |
「起動操作」をクリックします。アカウント管理に関係するコマンドが表示されます(図4-1)。これらのコマンドは、Sashプロンプトでhelp account
と入力して表示されるものと同じです。詳細は、第11章「Sashでのユーザーのプロビジョニング」の「サブコマンドの表示」を参照してください。
使用できるすべてのコマンドのリスト(図4-2)を表示するには、「操作」タブで「listAllCommands」を選択し、表示される「listAllCommands」ページで「起動操作」をクリックします。Sashコマンドについては、「使用できるコマンドの表示」を参照してください。Sashを使用したユーザー管理の詳細は、「ユーザーの作成」を参照してください。
コマンド・サービスMBeanは、XDMS(XML Document Management Server)にユーザーをプロビジョニングできるようにするために、Presenceアプリケーション内にデプロイされます。「コマンド・サービス(XDMSプロビジョニング)」を参照してください。
SIPアプリケーションのセキュリティを構成するには、最初に、デプロイメント・ディスクリプタ・ファイルsip.xml
で<security-constraint>
要素を定義してアプリケーションが使用する認証ユーザー・リポジトリに適したセキュリティ・プロバイダ(ログイン・モジュール)を設定した後、ログイン・モジュール自体を構成します。sip.xml
でのセキュリティの設定の詳細は、「SIPサーブレットでのセキュリティ」を参照してください。
デプロイするアプリケーションごとにログイン・モジュールを構成できます。デプロイメント・プロセスの間に、Application Server Controlデプロイ・ウィザードの「デプロイ設定」ページの「セキュリティ・プロバイダ」タスクを使用して、SIPまたはHTTPアプリケーションのログイン・モジュールを構成できます。アプリケーションをデプロイした後は、「管理」ページの「セキュリティ・プロバイダ」タスクからアクセスする「ログイン・モジュールの編集」ページで、ログイン・モジュールの構成を確認または編集できます(図4-3)。
詳細は、『Oracle Containers for J2EEデプロイメント・ガイド』の「Application Server Controlコンソールによるデプロイ」を参照してください。
また、アプリケーションのEAR(Enterprise Archive)ファイルに含まれるsystem-jazn-data.xml
ファイルまたはorion-application.xml
ファイルの<jazn-loginconfig>
の設定を使用して、ログイン・モジュールを構成することもできます。
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 ログイン・モジュールのオプション
オプション | 説明 |
---|---|
|
|
|
SIPアプリケーションの場合は、 |
|
アカウントがロックされる時間です(秒単位)。 |
|
アカウントがブロックされるまでに許容される最大のログイン失敗回数。 |
orion-application.xml
の<jazn-loginconfig>
要素では、アプリケーションが使用するログイン・モジュールを定義します。このファイルで設定した構成は、system-jazn-data.xml
に移入されます。例4-1に、RADIUS認証システムに対して認証を行うためのログイン・モジュールの構成を示します。
例4-1は、Proxy Registrarアプリケーションのログイン・モジュールを定義しています。ただし、このアプリケーションではユーザーはRADIUSデータベースで認証される必要があります。表4-4で説明されているオプションに加えて、RADIUSログイン・モジュールでは、表4-5で説明されているオプションもサポートされています。
表4-5 RADIUSログイン・モジュールのオプション
オプション | 説明 |
---|---|
|
リモートRADIUSサーバーのホスト名またはIPアドレス |
|
認証リクエストの宛先ポート |
|
アカウンティング・サーバーの宛先ポート |
|
RADIUSサーバーとRADIUSクライアントのみが認識する |
例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>
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>要素の子要素
要素 | 説明 |
---|---|
|
|
|
サーブレットとSIPメソッドのセットです。この要素は、認証が必要なサーブレットと、認証に使用するSIPメソッドを記述します。 |
|
このリソース・コレクションにアクセスできるユーザー・ロールを示します。 |
|
セキュリティ・ロールの名前です。 |
プログラムによるセキュリティ
プログラムによるセキュリティでは、SipServletMessage
のメソッドgetRemoteUser
、isUserInRole
およびgetUserPrincipal
を使用して、サーブレットの内部からセキュリティ・モデルを記述します。
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のアサーションをサポートします。
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を定義できます。
また、SIPアプリケーションのセキュリティを構成するには、最初にデプロイメント・ディスクリプタ・ファイルsip.xml
で<security-constraint>
のサブ要素<auth-constraint>
を定義して、アプリケーションが使用する認証ユーザー・リポジトリに適したセキュリティ・プロバイダ(ログイン・モジュール)を設定した後、ログイン・モジュール自体をMBeanブラウザで構成します。
この項では、Oracle Internet Directory(OID)を、OCMSデプロイ用のユーザー・プロビジョニング・リポジトリとして構成する方法について説明します。この付録の内容は次のとおりです。
OIDにプロビジョニングされているユーザーの認証および認可サービスをOCMSでサポートするには、OCMSと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の次の属性も構成する必要があります。
orclcommonnicknameattribute(「JAASユーザー名のLDAPユーザー・エントリへのマッピング」を参照)
orclsubscribernicknameattribute(「JAASレルムのLDAPサブスクライバへのマッピング」を参照)
orclcommonnamingattribute(「JAASロールのLDAPグループへのマッピング」を参照)
JAAS(Java Authentication and Authorization Service)のユーザー名は、プロビジョニング済の各LDAPレルムに対するノードcn=Common, cd=Products, cn=OracleContextの下のorclcommonnicknameattributeの値に基づいて、LDAPのユーザーにマップされます。たとえば、特定のレルムについてこの属性をuidに設定すると、OIDで認証を行うSIPまたはWebユーザーは、認証の際にユーザー名として対応するLDAP UIDを提供する必要があることを意味します。
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ロールが決まります。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ロールが割り当てられます。
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を関連付けます。
適切なLDAPレルムのノードcn=Products,cn=OracleContextの下にOCMS製品コンテナ・エントリを追加します。
dn: cn=OCMS,cn=Products,cn=OracleContext,dc=example,dc=com changetype: add objectclass: orclContainer
前述で作成した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
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
ユーザー・データ・ストアに関して、このOID LDAPサーバーと関連付けるOCMSインスタンスごとに手順2と3を繰り返します。
次の手順を実行して、OCMSの静的検証機能をインストールします。
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管理者ガイド』を参照してください。
OIDをサポートするようにOCMSを構成するには、Subscriber Data Services(subscriberdataservices.ear
)とその子アプリケーションを、OCMS OC4Jのインスタンスからアンデプロイする必要があります。アプリケーションとその子アプリケーションを再デプロイする前に、ユーザー・サービスとセキュリティ・サービスのEJB構成を、次のLDAP構成パラメータをsecurityservice.jar
およびuserservice.jar
のejb-jar.xml
ファイルに追加することで変更する必要があります。
java.naming.security.principal
java.naming.provider.url
java.naming.security.protocol
(オプション・パラメータ)
また、ユーザー・サービスEJBの構成は、SIP URIが格納されるLDAPユーザー属性を定義するSipUriLdapAttribute
も公開します。値が定義されていない場合、この属性のデフォルトはmailです。
ユーザー・プロビジョニング・ストアとしてOIDを使用してSubscriber Data Servicesアプリケーションを構成するには、次のようにします。
Subscriber Data ServicesアプリケーションのEARファイル(subscriberdataservices.ear
)およびその子アプリケーションを、一時ディレクトリにコピーします。
Subscriber Data Servicesアプリケーションと子アプリケーションを、OC4Jインスタンスからアンデプロイします。Application Server Controlを使用したSIPアプリケーションのデプロイ、アンデプロイおよび再デプロイに関する項を参照してください。
一時ディレクトリでSubscriber Data Servicesアプリケーションを展開します。
securityservice.jar
を展開します。
META-INFの下にあるejb-jar.xml
を編集し、次のエントリを、java.naming.security.principal
、java.naming.provider.url
、java.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.principal 、java.naming.security.credentials 、java.naming.provider.url の各環境エントリを、LDAPサーバーの構成で更新する必要があります。通常、java.naming.security.principalのエントリは、現在のOCMSインスタンスに関連付けられているorclApplicationEntityオブジェクトのdnに設定します。OID LDAPサーバーに対してSSLベースの接続を行う場合は、オプションのエントリjava.naming.security.protocol をssl に設定する必要もあります。
java.naming.security.credentialsの値をクリアテキストで指定するには、クリアテキストのパスワードの先頭に!を追加します(!passwordのようになります)。セキュリティを追加するには、不明瞭な形式のパスワードを使用します。 動的検証機能を使用するように構成されたOIDデプロイでは、StaticVerifierAttributeエントリは不要であるため、削除してください。静的検証機能を使用するように構成されたOIDデプロイでは、StaticVerifierAttributeエントリを、OCMSの静的検証機能を格納するユーザー属性に設定してください。この属性の値は、通常、authpassword;orclappidです。authpasswordは静的な文字列で、orclappidは、OIDにインストールされたOCMSの静的検証機能を一意に識別するorclappid属性の値で置き換えられます。オプションのUserSearchFilter属性は、LDAPリポジトリでのユーザーの検索時に適用するLDAPフィルタの値を設定します。省略する場合、ユーザー検索フィルタは適用されません。 |
securityservice.jar
を再パッケージングします。
userservice.jar
を展開します。
META-INFの下にあるejb-jar.xml
を編集し、次のエントリを、java.naming.security.principal
、java.naming.provider.url
、java.naming.security.protocol
、SipUriLdapAttribute
の各パラメータを含むエントリ(例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.principal 、java.naming.security.credentials 、java.naming.provider.url の各環境エントリを、LDAPサーバーの構成で更新する必要があります。さらに、OID LDAPサーバーに対してSSLベースの接続を行う場合は、オプションのエントリjava.naming.security.protocol をssl に設定する必要もあります。userserviceはオプションの環境パラメータSipUriLdapAttribute を公開します。このエントリに設定する値は、SIP URIが格納されるLDAPユーザー属性です。このエントリに値を設定しないと、属性はデフォルト値のmail になります。 |
userservice.jar
を再パッケージングします。
Subscriber Data ServicesのEARファイルを再パッケージングします。
再パッケージングしたSubscriber Data Servicesアプリケーションと子アプリケーションを、OC4Jインスタンスに再デプロイします。
『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ポートです。
すべてのロールを保持するユーザーが存在するようにProxy Registrarを構成するには、デフォルトのPUBLICロールを割り当てます。
Oracle Delegated Administration Servicesを使用すると、ユーザーの識別名を、LDAPグループのuniquemember属性の値の一覧に追加することで、LDAPグループにユーザーを追加できます。詳細は、『Oracle Identity Management委任管理ガイド』を参照してください。
proxyregistrarでsip.xmlの認証制約を構成して、SIPメッセージの種類に基づいて、特定のロール(Location Serviceなど)のユーザー・メンバーシップを要求することもできます。
脚注
脚注1: SIPサーブレットAPI、バージョン1.0