Sun ONE logo     上一章     目录     索引     下一章     
Sun ONE Calendar Server 管理员指南



第 1 章   Sun ONE Calendar Server 介绍


Sun™ ONE Calendar Server 是一个基于 Web 的可伸缩解决方案,可提供企业和服务提供商集中式的日历和日程安排。Calendar Server 支持个人日历和组日历以及各种资源(如会议室和设备)的日历。

本章包含以下几节:


Calendar Server 管理员

Calendar Server 管理员 (calmaster)

Calendar Server 管理员是指可以管理 Calendar Server 的用户名及相关口令。该用户拥有管理 Calendar Server 的权限,但没有管理目录服务器的权限。默认用户 ID 是 calmaster,但在安装过程中,如果您有需要,也可以指定其他用户。安装后,您也可以ics.conf 文件的 service.admin.calmaster.userid 中指定其他用户。

您为Calendar Server 管理员所指定之用户 ID 必须是目录服务器上有效的用户帐户。如果在安装过程中,目录服务器上不存在Calendar Server 管理员用户帐户,则必须在安装后添加。例如,如果接受默认的 calmaster,则目录服务器上必须存在名为 calmaster 的用户。

表 1-1 说明 ics.conf 文件中的 Calendar Server 管理员配置参数。


表 1-1    Calendar Server 管理员配置参数 

参数

说明

service.admin.calmaster.userid  

指定为 Calendar Server 管理员的用户 ID。在 Calendar Server 的安装过程中必须提供这个值。默认值为 "calmaster"  

service.admin.calmaster.cred  

指定为 Calendar Server 管理员的用户 ID 口令。在安装过程中必须提供这个值。  

caldb.calmaster  

Calendar Server 管理员的电子邮件地址。默认值为 "root@localhost"  

service.admin.calmaster.overrides.accesscontrol  

表示 Calendar Server 管理员是否能够改写访问控制。默认值为 "no"  

service.admin.calmaster.wcap.allowgetmodifyuserprefs  

表示 Calendar Server 管理员是否能够使用 WCAP 命令获取和设置用户首选项。默认值为 "no"  

service.admin.ldap.enable  

service.admin.calmaster.userid 中指定的用户启用 LDAP 进行用户身份验证。默认值为 "yes"  

Calendar Server 用户和组(仅限于 UNIX)

在 Solaris 和其他 UNIX 系统上,这些帐户是指运行 Calendar Server 所使用的 UNIX 用户和组身份。建议使用默认值 icsusericsgroup,如果这些默认值不存在,安装程序会自动创建。icsusericsgroup 值分别存储在 ics.conf 文件的 local.serveruidlocal.servergid 参数中。

root(仅限于 UNIX)

在 Solaris 和其他 UNIX 系统中,您必须以 root(用户 ID = 0)的身份登录(或成为该用户)才能安装、重新安装或升级 Calendar Server 要使用命令行公用程序管理 Calendar Server,您必须以 root 或管理员(如 icsuser)的身份登录(或者成为该用户)。

Windows NT 管理员

要在 Windows NT 系统上安装和管理 Calendar Server,您必须以管理员的身份登录,并拥有对系统的全部管理员权限。


Calendar Server 用户

创建 Calendar Server 用户

Calendar Server 用户可以手动创建或自动创建:

  • 手动-管理员可以使用目录服务器工具在目录服务器中添加用户,然后用 Calendar Server cscal 公用程序创建用户的默认日历。如果目录服务器中尚不存在用户,管理员可以使用 Calendar Server csuser 公用程序同时创建用户和日历。

  • 自动-如果用户已经存在于目录服务器中,Calendar Server 会在该用户第一次登录时自动创建默认日历。Calendar Server 会使用用户 ID 作为默认日历 ID (calid),除非已经存在同名日历。

    例如,假定 TChang 已存在于目录服务器中,但尚未启用日历安排功能(也就是说,该用户还没有默认日历)。当 TChang 第一次登录到 Calendar Server 时,Calendar Server 会自动启用 TChang 进行日历安排,并用 calid TChang 创建一个默认日历。

Calendar Server 用户的身份验证

Calendar Server 会存储日历、日历属性、访问控制信息、事件、待办事项(任务)和警报并加以管理。但是,Calendar Server 需要一个目录服务(如 LDAP 服务器)来进行用户身份验证以及存储和检索用户首选项。

Calendar Server 的默认安装支持 LDAP 目录(如 Netscape 目录服务器)所定义和维护的用户。为使非 LDAP 目录服务器中定义的用户能够访问,Calendar Server 还支持 Calendar Server API (CSAPI) 插件。

有关更多信息,请参见“配置新的 Calendar Server 用户”


Calendar Server 数据

有关数据访问控制的信息,请参见 “Calendar Server 访问控制”

Calendar Server 数据格式

Calendar Server 数据格式以 RFC 2445“Internet Calendaring and Scheduling Core Object Specification (iCalendar)”为模型。Calendar Server 会存储日历、日历属性、访问控制信息、事件、待办事项(任务)和警报并加以管理。但是,Calendar Server 不管理用户信息。它需要目录服务来执行诸如用户身份验证以及存储和检索用户首选项等操作。

Calendar Server 格式编码

Calendar Server 支持以下格式编码:

  • SHTML (.shtml) 默认

  • XML (.xml) 仅限于 WCAP

  • iCalendar (.ical) 仅限于 WCAP

若要添加其他格式,您可以自己为 Calendar Express 视图和对话框开发 XSL 转换。也可以使用 CSAPI 开发 WCAP 协议的转换器 DLL 或共享库。

有关 CSAPI 的详细信息,请参见《Sun ONE Calendar Server Programmer's Manual》。

日历组

日历组是由个别日历组成的名称列表。利用组日历,可以将多个日历合并为一个日历以便于显示。例如,一位用户的日历组可以由私人日历、部门日历和公司假日日历组成。用户还可以使用日历组选择日历列表并排查看日历或邀请日历所有者加入某个事件。

日历数据的导入和导出

用户可以使用 iCalendar (.ics) 或 XML (.xml) 格式导入和导出日历数据。最终用户可以使用 Calendar Express 导入和导出数据。有关信息,请参见 Calendar Express 联机帮助。Calendar Server 管理员可以使用 csimportcsexport 命令行公用程序导入和导出日历数据。

Calendar Server 数据交换和警报

日历可以嵌入到电子邮件和 Web 页中作为引用链接。用户可单击链接查看日历,而且只要拥有对日历的读访问权,便不需要登录到 Calendar Server 中。例如,以下链接指定了一个名为 Auditorium 的资源室:

http://calendar.sesta.com:8080/?calid=Auditorium

Calendar Server 支持服务器端电子邮件警报,该警报可以发送给列表上的收件人。电子邮件的格式是可配置的,且会视为服务器属性(而不是用户或日历属性)来维护。Calendar Server 对 ITIP/IMIP 标准(RFC-2446 和 RFC-2447)的支持有限,包括事件的 ITIP 方法:PUBLISH、REQUEST、REPLY 和 CANCEL。

Calendar Server 用户首选项

Calendar Server 会根据“用户首选项”的属性,为每位用户自定义日历信息的显示。用户首选项(相对于日历首选项)是指日历信息在用户界面上的表示形式。用户首选项包括电子邮件地址、用户名、呈现日历信息时使用的首选颜色等。有关首选项列表,请参见《Sun ONE Calendar Server Programmer's Manual》中的 get_userprefsset_userprefs 命令。


Calendar Server 体系结构

有关对更复杂的 Calendar Server 配置的说明,请参见 Calendar Server 部署配置

Calendar Server 内部子系统

Calendar Server 包括一个共享库集合,这些共享库组成了下列内部子系统:

图 1-1 显示这些子系统之间的逻辑流。

图 1-1    Calendar Server 内部子系统逻辑流


Calendar Server 内部子系统逻辑流

协议子系统

命令和请求通过 HTTP 协议层进入。这是一个最小的 HTTP 服务器实现,可有效支持日历请求。

客户端使用 SHTML 或 Web 日历访问协议 (WCAP) 提交请求:

  • Calendar Express UI 使用 SHTML 命令,这些命令基于生成该用户界面的 XML 和 XSLT 规范。为响应收到的请求,用户界面生成器在访问控制允许的范围内,会使用 XML 规范生成一个包含日历和用户数据的文档树。然后 XSLT 规范会遍历该文档数据树并产生 HTML。这样的设计将可减少客户端和服务器之间的交互,从而降低网络通信量。

  • WCAP 是一种开放式协议,它允许您将自己的界面写入 Calendar Server。在使用 WCAP 命令(即扩展名为 .wcap 的命令)时,除了某些管理命令外,您可以执行所有的服务器命令。可以使用 WCAP 命令返回原始、未经格式化的日历信息并获取基于 JavaScript 的用户界面。还可以在 HTML 中使用 WCAP 命令请求以 XML 或 iCalendar 的格式包装输出。

    有关 WCAP 命令的信息,请参见《Sun ONE Calendar Server Programmer's Manual》。

核心子系统

核心子系统包括访问控制子系统、用户界面生成器子系统(使用 XML 和 XSLT 的 SHTML 或使用数据转换器的 WCAP)、Caldb 子系统以及任何 CSAPI 插件。核心子系统会处理日历请求并生成所需的用户界面输出。核心子系统还处理用户身份验证,其中包括:

数据库子系统

数据库子系统使用 Sleepycat Software 的 Berkeley 数据库(数据库 API 不是公用的)。数据库子系统会向数据库中存储日历数据,同时也会从数据库中检索日历数据,包括事件、待办事项(任务)和警报。日历数据基于 iCalendar 格式,而用于 Calendar Server 数据的架构是 iCalendar 标准的超集。数据库子系统返回低级格式的数据,然后核心用户界面生成器(SHTML 或 WCAP)会将低级数据转换为所需的输出。

存储分布式日历时,Calendar Server 会使用数据库连线协议 (DWP) 来提供联网功能。有关更多信息,请参见“分布式数据库服务-csdwpd”

有关管理数据库的信息,请参见第 5 章 “管理 Calendar Server 数据库”,这一章说明如何使用 csdb 公用程序管理数据库和日历数据。

Calendar Server 服务

这些服务会以进程(在 UNIX 系统上是后台驻留程序)的方式运行在单部或多部机器上,将具体取决于您的配置。

管理服务-csadmind

Calendar Server 的每个实例都需要 csadmind 服务。该服务为管理 Calendar Server 提供了单个身份验证点,并提供了为数众多的管理工具,如启动或停止服务的命令、列出或注销用户的命令、列出或注销用户的命令、创建或删除用户及资源的命令、提取或存储日历的命令以及提取或重置计数器的命令。csadmind 服务对于警报通知、组日程安排请求、数据库检查点和死锁检测,以及磁盘使用和服务器响应监视也会加以管理。

HTTP 服务-cshttpd

由于 Calendar Server 使用 HTTP 作为主要传输方式,因此 cshttpd 服务会负责侦听 HTTP 命令。cshttpd 服务是否会接收用户命令并向调用方返回数据,将具体取决于接收的命令格式:

  • 如果收到的命令带有默认的 .shtml 扩展名,则 cshttpd 会返回 HTML 格式的数据。

  • 如果收到的命令带有 .wcap 扩展名,则 cshttpd 会返回以下格式的日历数据:标准 RFC2445 iCalendar 格式 (text/calendar)、XML 格式 (text/xml) 或嵌入在 HTML 中的 JavaScript (text/js)。

通知服务-csnotifyd

csnotifyd 服务会使用事件通知服务 (ENS) 发送事件和待办事项(任务)的通知,作为事件的中介器。csnotifyd 也可预订警报事件。当发生警报事件时,csnotifyd 会向收件人发送 SMTP 邮件提醒通知。

事件通知服务 (ENS)-enpd

enpd 服务是事件通知服务 (ENS) 的另一半,它是事件警报的中介器。enpd 会从 csadmind 服务接收警报通知,查看此事件的预订请求,然后通知此事件的预订者,将预订警报通知传递给 csnotifydenpd 也会从 csnotifyd 接收和存储预订请求或取消预订请求(取消预订)。

分布式数据库服务-csdwpd

csdwpd 服务使您可以将多个服务器链接在同一个 Calendar Server 系统中,以形成一个分布式日历存储。csdwpd 可以在任何装有 Calendar Server 的服务器后台运行。之后便可接受对日历信息的请求,这些请求遵循数据库连线协议 (DWP)。DWP 是一个内部协议,可提供 Calendar Server 数据库联网功能。

csdwpd 服务应该仅在具有本地日历数据库的服务器上运行,并且必须从其他 Calendar Server 安装提供对日历数据的网络访问。

只有在较快的网络上才能使用 DWP。如果各数据库之间的网络连接很慢,DWP 可能会降低系统的总体性能。

基本 Calendar Server 配置

您可以配置 Calendar Server,使其满足组织的各种要求。例如,它可以是一个独立的服务器,也可以配置在多个实例上,将不同的 Calendar Server 服务重复或拆分于各实例之间。

本节说明这些基本的 Calendar Server 配置:

有关对更复杂的 Calendar Server 配置的说明,请参见 Calendar Server 部署配置

最小 Calendar Server 配置

图 1-2 显示了一个最小的 Calendar Server 配置,其中包括:

  • 支持事件通知的单个 Calendar Server 实例。此配置包括必需的管理服务 (csadmind)、处理收到的 SHTML 和 WCAP 请求的 HTTP 服务 (cshttpd),以及事件通知服务 (ENS) enpdcsnotifyd

  • 目录服务(如 LDAP 服务器)。

图 1-2 中,CLD 表示日历查找数据库 (Calendar Lookup Database)。CUA 表示日历用户代理程序,日历客户端可使用此应用程序来访问 Calendar Server。iCal 是指 RFC 2445 Internet Calendaring and Scheduling Core Object Specification (iCalendar)。日历数据库位于本地,因此您不需要数据库连线协议 (DWP) 服务。

图 1-2    最小 Calendar Server 配置


最小 Calendar Server 配置

可伸缩的 Calendar Server 配置

Calendar Server 在横向和緃向方向都具有伸缩性。Calendar Server 可使用单台或多台机器上的多个处理器。Calendar Server 包括 cshttpdcsadmindcsdwpdcsnotifydenpd 等服务,这些服务可以在不同的配置下运行,提供您很大的灵活性和可伸缩性。

Calendar Server 支持横向可伸缩性,您可在多台机器上分布安装。要实现横向可伸缩性,请在多台机器上安装 Calendar Server 的不同实例。每个系统的基本要求是:

  • 每个 Calendar Server 实例都必须有管理 (csadmind) 服务。不过,即使没有 csadmind 服务,您仍可以在一个单独的实例上安装事件通知服务 (ENS) enpdcsnotifyd

  • 所有其他的 Calendar Server 服务都必须至少安装一次,除非您是使用本地数据库的单实例安装。在此安装中不需要 DWP (csdwpd) 服务,因为日历数据库位于本地。

图 1-3 显示三个 Calendar Server HTTP 前端服务,它们使用了三种 Calendar Server 数据库服务。所有这六个实例都可以在不同的机器上运行。

此配置使用数据库连线协议 (DWP),这个内部协议可以提供 Calendar Server 数据库联网功能。DWP 使用 HTTP 作为基础,其中 HTTP POST 或 GET 命令包含一个二进制的 MIME 部分,此部分包含已序列化的二进制数据库信息。有关更多信息,请参见分布式数据库服务-csdwpd

图 1-3    可伸缩的 Calendar Server 配置


可伸缩的 Calendar Server 配置


Calendar Server 访问控制

Calendar Server 使用访问控制列表 (ACL) 来确定对日历、日历属性和某些日历组件(如事件和待办事项(即任务))的访问控制。一个 ACL 包括一个或多个访问控制项 (ACE),这些项是共同适用于同一日历或组件的字符串。一个 ACL 中的各个 ACE 必须以分号分隔。例如:

  • jsmith^c^wd^g 由单个 ACE 组成。

  • @@o^a^r^g;@@o^c^wdeic^g;@^a^sf^g 由三个 ACE 组成。

Calendar Server 访问控制功能包括:

  • 日历属性-只有日历的主要所有者或管理员能够删除日历或更改日历的属性,包括日历的 ACL。

  • 组日程安排-当组织者安排组事件时,Calendar Server 会使用 ACL 来确定对被邀请人日历的访问权限。例如,事件的组织者可能只能查看参与者的空闲/占用时间,而不能查看参与者的整个日历。

  • 其他所有者-日历的主要所有者可以指定该日历的其他所有者以他们自己的名义进行操作。例如,主要所有者(如副总裁)可以指派一位行政助理来安排会议和邀请参与者,以及取消或接受其他人安排的会议邀请。

最终用户可使用 Calendar Express 为他们的日历设置访问控制。Calendar Server 管理员可以在 ics.conf 文件中设置访问控制配置参数,并使用 cscalcsresourcecsuser 命令行公用程序。

有关更多信息,请参见第 4 章 “管理 Calendar Server 访问控制”


Calendar Server API 和 SDK

有关 CSAPI、authSDK 和 WCAP 的信息,请参见《Sun ONE Calendar Server Programmer's Manual》。

有关 ENS API 的信息,请参见《Sun ONE Messaging and Collaboration Event Notification Service Manual》。

Calendar Server API (CSAPI)

Calendar Server API (CSAPI) 使程序员可以自定义 Calendar Server 的功能领域(如用户登录身份验证、访问控制和日历查找)。

例如,在默认情况下,Calendar Server 会使用 LDAP 服务器中的项对用户进行身份验证并存储用户首选项。如果您的身份验证机制不是基于 LDAP,您可以使用 CSAPI 来实现现有的身份验证和目录服务,改写默认的 Calendar Server 机制。

事件通知服务 (ENS) API

事件通知服务 (ENS) 是一个警报分发程序,它会检测警报队列中的事件,并将这些事件的通知发送给预订者。ENS API 使程序员可以修改 Calendar Server 所使用的发布和预订功能,以执行预订事件、取消预订事件、通知事件预订者等功能。ENS API 由以下几个特定的 API 组成:

  • 已发布的 API

  • 预订者 API

  • 发布和预订分发程序 API

代理身份验证 SDK (authSDK)

Calendar Server 所提供的 authSDK 可用于验证用户身份。您可利用 authSDK 将现有的入口服务与 Calendar Server 集成在一起,从而使用户无需进行重新身份验证就可以访问各种应用程序。

在 Calendar Server 和 authSDK 之间建立连接后就构成了一种信任关系。如果用户登录后由 authSDK 成功验证了身份,则 Calendar Server 会接受代理服务器所生成的证书来执行其功能。

authSDK 包含下列函数,这些函数打包在一个 DLL/共享对象库 (libicsexp10) 和一个头文件 (expapi.h) 中:

  • CEXP_GenerateLoginURL 生成一个具有有效会话 ID 的 URL。

  • CEXP_GetVersion 生成版本 ID 字符串。

  • CEXP_Init 初始化 SDK。

  • CEXP_SetHttpPort 使您可以指定用来与 Calendar Server 取得联系的端口。

  • CEXP_Shutdown 执行所有关闭过程,包括释放内存和关闭连接。

Web 日历访问协议 (WCAP)

Calendar Server 5.x 支持 WCAP 2.0,它是一个基于命令的高级协议,用于与客户端进行通信。WCAP 命令(扩展名为 .wcap)使客户端可以获取、修改和删除日历组件、用户首选项、日历属性以及其他日历信息(如时区等)。WCAP 元素(如时间、字符串和参数等)遵循 RFC2445、RFC2446 和 RFC2447 规范(除非另外说明)。

WCAP 使用下列格式在 HTTP 消息中返回输出日历数据:

  • 标准 RFC2445 iCalendar 格式 (text/calendar)

  • XML 格式 (text/xml)

  • 嵌入在 HTML 中的 JavaScript (text/js)。

利用 WCAP 命令,使用 login.wcap 登录的 Calendar Server 管理员具备下列能力:

  • 改写对 WCAP 命令的访问控制

    管理员可以使用 WCAP 命令来读取(提取)、改变(存储)或删除其他用户的日历。要使管理员拥有此权限,以下位于 ics.conf 文件中的参数必须设置为“yes”:

    service.admin.calmaster.overrides.accesscontrol="yes"

  • 若要检索和修改任何用户的首选项

    管理员可以使用 get_userprefs.wcapset_userprefs.wcap 来检索和修改任何用户的首选项。要使管理员拥有此权限,以下位于 ics.conf 文件中的参数必须设置为“yes”:

    service.admin.calmaster.wcap.allowmodifyuserprefs="yes"

有关更多信息,请参见《Sun ONE Calendar Server Programmer's Manual》。


单次登录 (SSO)

单次登录 (SSO) 使用户只需进行一次身份验证,即可使用多个应用程序。例如,用户在登录到 Calendar Express 后,无需再次登录就可以使用 Messenger Express。

SSO 独立于其他身份验证机制、会话管理和资源访问控制。有了 SSO,应用程序便可以形成信任环,共享 cookie 并接受彼此的用户身份验证。每个验证机构都存有其他应用程序验证例程可以理解的 cookie。如有必要,每个应用程序也可以拥有自己的验证接口。

SSO 具有以下要求:

  • 客户端浏览器必须接受 cookie。

  • 每个应用程序都必须实现验证协议。

  • 所有受信任的应用程序必须位于同一个域中。

  • 要切换到其他身份,用户必须重新启动浏览器,因为每个浏览器会话只能支持一个用户 ID。

若要启用多个应用程序间的 SSO,您必须为每个应用程序进行配置。有关配置 Calendar Server 的信息,请参见“配置单次登录 (SSO)”


Calendar Server 部署配置

除了最小 Calendar Server 配置”( 1-2)和“可伸缩的 Calendar Server 配置”( 1-1)外,另外两种 Calendar Server 配置如下:

(由于特定站点有不同的要求,所以可能还有其他的 Calendar Server 配置。)

网络前端,单个数据库后端

服务图 1-4 显示一种配置,其中客户端浏览器和应用程序通过前端 (cal.example.com) 的 HTTP (cshttp) 服务连接到 Calendar Server。然后,对日历数据的所有请求都会通过 DWP (csdwpd) 服务路由到后端 (caldb.example.com)。

前端只需要 HTTP (cshttp) 和管理 (csadmind) 服务,因为它不会执行任何数据库处理。后端不需要 cshttpd,但它必须有管理 (csadmind) 和 DWP (csdwpd) 服务以及事件通知服务 (ENS) enpdcsnotifyd

图 1-4    网络前端,数据库后端


网络前端,数据库后端

多个前端,多个数据库后端

对于具有多个后端服务器的配置,Calendar Server 会提供这些方法来确定日历所在的服务器:



备注 Calendar Server 提供了 CLD 算法插件,以便与旧版本兼容。新的 LDAP CLD 插件和接口与 CLD 算法插件不兼容。Sun 建议您于分布式日历数据库使用新的 LDAP CLD 插件,而不是使用较早的 CLD 算法插件。



LDAP 企业查找目录 (CLD) 插件

LDAP CLD 插件允许将日历数据库分布在许多后端服务器上。数据库中的每个日历由唯一的日历 ID (calid) 标识。有关更多信息,请参见“LDAP 日历查找数据库 (CLD) 插件”

CLD 算法插件

图 1-5 显示一种配置,其中客户端通过用户提供的机制路由到前端的 HTTP (cshttp) 服务。登录时返回的会话 ID 只对此次登录的主机系统有效。对此会话 ID 的所有请求都必须路由到同一个主机,否则用户将被迫重新登录。

在此示例中,数据库在经过分布之后,日历 A-M 位于 caldb1.example.com 服务器上,日历 N-Z 位于 caldb2.example.com 服务器上。CSAPI 插件会处理日历 ID 和日历所在服务器之间的映射。默认 CSAPI 实现(由 Calendar Server 提供)所使用的算法,可建立日历 ID 与服务器名称之间的关联。有关更多信息,请参见“Calendar 查找数据库 (CLD) 插件”

每个前端都需要 HTTP (cshttp) 和管理 (csadmind) 服务。对日历数据的所有请求都会通过 DWP (csdwpd) 服务路由到适当的后端。每个后端都需要管理 (csadmind) 和 DWP (csdwpd) 服务以及事件通知服务 (ENS) enpdcsnotifyd

图 1-5    多个前端,多个数据库后端


多个前端,多个数据库后端


上一章     目录     索引     下一章     
版权所有 2002 Sun Microsystems, Inc. 全权所有。

更新日期 2002 年 8 月 30 日