Sun Java System Content Delivery Server 集成和配置指南
|
|
Sun Java System Content Delivery Server 使用 Oracle 数据库管理订户配置文件。如果您已经拥有大量订户数据,则无需复制此信息。Content Delivery Server 可以配置为使用现有订户数据。
订户适配器用于将外部订户数据映射到 Content Delivery Server 处理订户相关功能时所需的数据。
本章介绍了随 Content Delivery Server 提供的订户适配器。可以使用用户配置 API 自行创建订户适配器。有关此 API 的信息,请参见《Sun Java System Content Delivery Server 5.1 定制指南》。
本章包含以下主题:
3.1 提供的订户适配器
当前,随 Content Delivery Server 提供的订户适配器支持轻量目录访问协议 (Lightweight Directory Access Protocol, LDAP) 格式。LDAP 订户适配器使用 XML 文件在 Content Delivery Server 和 LDAP 目录之间映射数据。
3.2 使用订户适配器
要指定想使用的订户适配器,必须将 module.security.subscriber.usermanager 属性设置为订户适配器的全限定类名。此属性位于 $CDS_HOME/deployment/deployment-name/conf 目录下的 security.conf 文件中。请使用下表中显示的值之一。
适配器
|
module.security.subscriber.usermanager 属性的值
|
Oracle
|
com.sun.content.server.vending.security.user.SubscriberImpl
要使用 Content Delivery Server 数据库存储所有订户数据,请使用此值。这是默认设置。
|
LDAP
|
com.sun.content.server.vending.security.user.ldap.ldapusermanager.LDAPUserManager
要使用外部 LDAP 目录存储订户数据,请使用此值。
|
要使用 LDAP 的订户适配器,还必须提供 XML 文件,说明要使用的映射。此文件在 3.3.1 为 LDAP 创建映射文件中进行介绍。
3.3 使用 LDAP
本节提供了一些附加信息,说明将订户数据存储在 LDAP 目录中时如何设置系统以使用 Content Delivery Server。3.3.1 为 LDAP 创建映射文件介绍了如何创建将 LDAP 目录中的字段映射到 Content Delivery Server 中的字段的文件。3.3.2 配置 Sun Java System Application Server 访问权限介绍了在使用 Sun Java System Application Server 时需要对安全策略进行的更改。3.3.3 调节 LDAP介绍了如何设置 LDAP 以提高性能。
3.3.1 为 LDAP 创建映射文件
要使用 LDAP 目录中的订户数据,您必须创建一个 XML 格式的映射文件,该文件将 Content Delivery Server 所需的数据映射到 LDAP 目录中的信息。$CDS_HOME/deployment/deployment-name/conf 目录下的 conf.xml 文件中包含一个样例映射。
创建映射文件:
1. 将 conf.xml 文件复制到同一目录的新文件,例如,cdsmapping.xml。
2. 编辑您的文件以定义 LDAP 数据映射。
3.3.1.1 Content Delivery Server 的订户数据指出必须向 Content Delivery Server 提供的数据。3.3.1.2 样例映射文件提供了一个样例文件。
3. 指示 Content Delivery Server 使用该文件。
将 $CDS_HOME/deployment/deployment-name/conf/security.config 文件中的 cds.security.ldapusermanager.config_file 属性设置为该文件的名称。
3.3.1.1 Content Delivery Server 的订户数据
映射文件的开头几行包含 LDAP 服务器的连接信息。下表介绍了映射文件中的属性。
表 3-1 介绍了必须设置的配置属性。
表 3-1 配置属性
属性
|
描述
|
search_scope
|
查找范围。指定以下值中的一个:
- 0 - 查找命名对象。
- 1 - 只查找命名对象的一个级别。这是默认值。
- 2 - 查找命名对象的整个子树。
|
max_search_wait_time
|
LDAP 执行查找请求的最长时间(以毫秒为单位)。使用负值表示没有限制。
|
表 3-2 介绍了定义 LDAP 环境的属性。
表 3-2 LDAP 属性
属性
|
描述
|
initial_context_factory
|
初始上下文工厂的全限定类名。
|
provider_url
|
提供者(LDAP 服务器)的 URL。
注 - 如果使用的是 Sun Java System Application Server,则 URL 不能包含空格。
|
prefix
|
使用的前缀。
|
username
|
用于访问 LDAP 的用户标识名。
|
password
|
与用户名关联的密码。
|
master_username
|
主服务器的用户名。此属性是可选的。
|
master_password
|
与主用户名关联的密码。此属性是可选的。
|
object
|
LDAP 中的一个或多个对象。
|
表 3-3 列出了 Content Delivery Server 使用的订户数据。在创建的 XML 文件中添加带有字段名的元素。表中注明了必需的字段。
表 3-3 订户数据
Content Delivery Server 字段
|
描述
|
loginId
|
订户访问 Subscriber Portal 时使用的登录 ID。
注 - 此字段为必需,且必须被映射。
|
password
|
提供的登录 ID 的密码。
注 - 此字段为必需,且必须被映射。
|
uniqueDeviceId
|
标识订户所使用的设备的唯一 ID。通常与 MSISDN 相同。
注 - 此字段为必需,且必须被映射。
|
firstName
|
订户的名字。
注 - 此字段为必需,且必须被映射。
|
middleName
|
订户的中间名。
|
lastName
|
订户的姓氏。
注 - 此字段为必需,且必须被映射。
|
gender
|
订户的性别。
|
street1
|
订户的街道地址。
|
street2
|
订户所需的其他地址信息。
|
city
|
订户所在城市的信息。
|
state
|
订户所在省/自治区/直辖市的信息。
|
postalcode
|
订户的邮政编码。
|
country
|
订户居住的国家/地区。
|
email
|
订户的电子邮件地址,发送密码提醒或活动通知时使用。
注 - 此字段为必需,且必须被映射。
|
phone
|
订户的电话号码。
|
activatedate
|
激活订户帐户的日期。
|
deactivatedate
|
取消激活订户帐户的日期。
|
salutation
|
订户喜欢的称呼。
|
enabled
|
订户的状态。如果没有提供值,则默认值为启用。
|
MSISDN
|
订户的 MSISDN 号码,向订户设备发送消息时使用。
注 - 此字段为必需,且必须被映射。
|
映射包含在 XML 文件的 <mapping>...</mapping> 部分中。映射元素具有以下属性:
- isDeletable。如果将其设置为 true,则用户记录可以由 Content Delivery Server 删除。将其设置为 false 可以防止用户记录被删除。
- isAddable。如果将其设置为 true,则用户记录可以由 Content Delivery Server 创建。将其设置为 false 可以防止用户记录被创建。
映射部分中的每个元素都可以具有以下一个或多个属性:
- isRequired。如果将其设置为 true,则表示映射的字段不能为 Null 或空。将其设置为 false 表示映射的字段可以为 Null 或空。如果此属性设置为 true ,并且从 LDAP 目录返回 Null 或空值,则将生成错误消息。
- isModifiable。如果将其设置为 true,字段则可以由 Content Delivery Server 修改。将其设置为 false 可以防止字段被修改。
- isMultiple。将其设置为 true 表明 LDAP 中的多个字段映射到 Content Delivery Server 中的字段。如果此属性为 true,则每个 LDAP 字段都必须包含 valuen 元素,其中 n 是从 0 到字段数 - 1 的序号。例如,如果将 uniqueDeviceId 字段映射到 handsetID 和 mobileID,则应该添加以下语句:
<uniqueDeviceID isMultiple=”true”>
<value0>handsetID</value0>
<value1>mobileID</value1>
</uniqueDeviceID>
|
密码元素也可以包含 isEncoded 属性。如果密码作为编码字符串进行存储,请将此属性设置为 true。如果密码不进行编码存储,请设置为 false。默认值为 false。
有关示例,请参见 3.3.1.2 样例映射文件。
3.3.1.2 样例映射文件
表 3-4 介绍了随后所示的样例映射文件中映射的样例数据。标识为不包含映射的字段将不显示在样例中。
表 3-4 样例 LDAP 文件的数据
Content Delivery Server 字段
|
LDAP 字段
|
loginId
|
SSN
|
password
|
pwd
|
uniqueDeviceId
|
handsetID、mobileID
|
firstName
|
givenName
|
middleName
|
(无映射)
|
lastName
|
familyName
|
gender
|
(无映射)
|
street1
|
street
|
street2
|
(无映射)
|
city
|
city
|
state
|
(无映射)
|
postalcode
|
zipcode
|
country
|
(无映射)
|
email
|
email
|
phone
|
(无映射)
|
activatedate
|
(无映射)
|
deactivatedate
|
(无映射)
|
salutation
|
(无映射)
|
enabled
|
status
|
MSISDN
|
MSISDN
|
代码样例 3-1 LDAP 数据的样例映射文件
<ldapusermanager>
<config>
<search_scope>1</search_scope>
<max_search_wait_time>1000</max_search_wait_time>
</config>
<ldap>
<initial_context_factory>com.sun.jndi.ldap.LdapCtxFactory
</initial_context_factory>
<provider_url>ldap://t1:389/ou=Users,o=LDAPUserManager
</provider_url>
<prefix>uid=</prefix>
<username>cn=directory manager</username>
<password>ldappwd</password>
<master_username>cn=directory manager</master_username>
<master_password>ldappwd</master_password>
</ldap>
<object>
<obj0>top</obj0>
<obj1>person</obj1>
<obj2>organizationalPerson</obj1>
</object>
<mapping isDeletable=”true” isAddable=”true”>
<loginId isRequired=”true”>SSN</loginId>
<password isRequired=”true” isEncoded=”false”>pwd</password>
<uniqueDeviceId isRequired=”true” isModifiable=”true” isMultiple=”true”>
<value0>handsetID</value0>
<value1>mobileID</value1>
</uniqueDeviceId>
<firstName isRequired=”true”>givenName</firstName>
<lastName isRequired=”true”>familyName</lastName>
<street1>street</street1>
<city>city</city>
<postalcode>zipcode<postalcode>
<email isRequired=”true”>email</email>
<enabled isRequired=”true”>status</enabled>
<msisdn isRequired=”true” isModifiable=”true”>msisdn</msisdn>
</mapping>
</ldapusermanager>
|
3.3.2 配置 Sun Java System Application Server 访问权限
如果使用的是 Sun Java System Application Server,则必须修改安全策略以便为 LDAP 订户适配器使用的类授予访问权限。请编辑位于 $CDS_HOME/deployment/deployment-name/sun/domains/server-domain/config 目录中的 server.policy 文件并添加以下语句:
grant {
permission java.security.SecurityPermission "insertProvider.SunJSSE";
permission java.lang.RuntimePermission "setFactory";
permission java.net.NetPermission "specifyStreamHandler";
};
|
在保存更改后,重新启动 Content Delivery Server。
3.3.3 调节 LDAP
将 LDAP 目录作为订户数据库时,您可能希望为映射到唯一设备 ID、登录 ID 或 MSISDN 的任何属性创建索引以提高性能。有关创建索引的说明,请参见所使用的 LDAP 目录的文档。请为映射到 uniqueDeviceId(在所创建的映射文件中)的属性创建索引。
创建索引会消耗大量资源,并且可能会影响系统性能。请选择适当的时间来创建索引,以便将对用户的影响降至最低。
3.4 订户帐户管理
订户帐户包含标识用于访问 Content Delivery Server 的订户和设备的信息。订户帐户由 Vending Manager 管理员通过 Vending Manager 管理控制台进行管理。订户还可以通过 Subscriber Portal 访问自己的帐户。
可以配置为订户和管理员显示的选项。例如,可以只允许订户查看自己的帐户,或者禁止管理员删除帐户。还可以配置订户或管理员可以编辑的字段。例如,可以禁止订户更改其移动电话号码,或者禁止管理员更改订户名。
要指定可以使用的选项和可以编辑的字段,请编辑 $CDS_HOME/deployment/deployment-name/conf 目录中的以下文件:
- subsubmgr.xml。配置此文件以指定订户可以通过 Subscriber Portal 进行的操作。
- vsadminsubmgr.xml。配置此文件以指定管理员可以通过 Vending Manager 管理控制台进行的操作。
管理订户帐户的操作为添加、编辑和删除。这些操作是由文件中的 <add>、<edit> 和 <delete> 元素表示的。要允许执行某个操作,请将 isEnabled 属性设置为 true。要禁止执行某个操作,请将 isEnabled 属性设置为 false。默认值为 false。例如,要防止订户创建帐户,请在 subsubmgr.xml 文件中包括以下语句:
<add isEnabled=”false”/>
每个文件中的 <edit> 元素内的元素显示可以管理的字段。Content Delivery Server 仅管理不是由文件中的元素表示的字段,例如,登录 ID。这些字段的有效属性为 isReadOnly 和 isRequired。要防止字段被更改,请将 isReadOnly 属性设置为 true。要使字段可以被更改,请将 isReadOnly 参数设置为 false。默认值为 false。
注 - 对于 password、mobile_id、first_name、last_name、email 和 status 元素,必须将 isRequired 属性设置为 true。
|
以下代码显示了默认 subsubmgr.xml 文件的相关部分。
代码示例 3-2 样例 subsubmgr.xml 文件
<subscriber>
<subscriber>
<!-- For adding -->
<add isEnabled="true"/>
<!-- For editing -->
<edit isEnabled="true">
<password isRequired="true"/>
<mobile_id isRequired="true" isReadOnly="true"/>
<first_name isRequired="true"/>
<middle_name/>
<last_name isRequired="true"/>
<salutation/>
<gender/>
<street_1/>
<street_2/>
<city/>
<state/>
<postal_code/>
<country_code/>
<email isRequired="true"/>
<contact_phone/>
</edit>
</subscriber>
</subscriber>
|
以下代码显示了默认 vsadminsubmgr.xml 文件的相关部分。
代码示例 3-3 样例 vsadminsubmgr.xml 文件
<vsadmin>
<subscriber>
<!-- For adding -->
<add isEnabled="true"/>
<!-- For editing -->
<edit isEnabled="true">
<password isRequired="true"/>
<status isRequired="true"/>
<mobile_id isRequired="true"/>
<first_name isRequired="true"/>
<middle_name/>
<last_name isRequired="true"/>
<salutation/>
<gender/>
<street_1/>
<street_2/>
<city/>
<state/>
<postal_code/>
<country_code/>
<email isRequired="true"/>
<contact_phone/>
</edit>
<!-- For deleting -->
<delete isEnabled="true"/>
</subscriber>
</vsadmin>
|
3.5 订户的自动置备
订户置备是指注册该订户并在订户数据库中创建一个条目。可以将 Content Delivery Server 配置为在未注册的订户访问 Subscriber Portal 时自动置备这些订户。如果启用了自动置备功能且未注册的订户尝试下载内容,则使用 MSISDN 号创建订户帐户并允许进行下载。
$CDS_HOME/deployment/deployment-name/conf/SubscriberPortal.properties 文件中提供了以下属性以设置自动置备:
- auto_provision.unknown.user - 确定是否在 Content Delivery Server 中自动注册未知订户。如果将此属性设置为 true,则可以在未知订户访问 Content Delivery Server 时自动对其进行注册。如果设置为 false,则禁止自动注册未知订户。默认值为 false。
- auto_provision.unknown.userpeer - 确定未注册的订户能否访问 Content Delivery Server。如果将此属性设置为 true,则订户无需在 Content Delivery Server 中注册即可访问系统。如果设置为 false,则强制订户在访问系统之前进行注册。如果将该属性设置为 true,并且 auto_provision.unknown.user 也设置为 true,则会为未知订户自动创建一个订户帐户。默认值为 true。
- auto_provision.unknown.userpeer.gifting - 确定是否自动注册礼品或共享内容的未知收件人。如果将此属性设置为 true,Content Delivery Server 将尝试自动为被赠予礼品或共享内容的未知订户创建一个订户帐户。如果设置为 false,则禁止自动置备未知收件人。默认值为 true。
- auto_provision.unknown.userpeer.mobile_originated - 确定在从未注册用户收到移动始发 (Mobile Originated, MO) 请求时是否置备新的订户帐户。如果将此属性设置为 true,则会在收到 MO 请求时置备帐户。如果将此属性设置为 false,则禁止置备帐户。默认值为 true。
- auto_provision.unknown.user.firstName - 提供在置备未知用户时使用的订户名字值。默认值为 External User。
- auto_provision.unknown.user.lastName - 提供在置备未知用户时使用的订户姓氏值。默认值为 External User。
- auto_provision.unknown.user.middleName - 提供在置备未知用户时使用的订户中间名值。默认值为 External User。
- auto_provision.unknown.user.enabled - 指定是否启用为未知用户创建的帐户。如果将此属性设置为 true,则会启用该帐户。如果将此属性设置为 false,则禁用该帐户。默认值为 true。
- auto_provision.unknown.user.email - 提供在置备未知用户时使用的订户电子邮件地址值。默认值为 @external.com。
Sun Java System Content Delivery Server 集成和配置指南
|
820-5379-10
|
|
版权所有 © 2008, Sun Microsystems, Inc. 保留所有权利