下列是 SEAM 鉴别系统的一个一般总览。如要了解更加详细的描述,请参见 "鉴别系统如何工作"。
从用户的立场来看,在 SEAM 对话得到启动之后, SEAM 通常是不可见的。 rsh 或 ftp,此类命令的工作方式与往常十分相近。初始化一个 SEAM 对话经常只是登录和提供一个 Kerberos 口令。
SEAM 系统是围绕着票券的概念演变而来的。票券是一套电子信息,用作识别用户或某项服务,诸如 NFS 服务。您的驾驶执照用以识别您并指示您拥有何种驾驶许可,与此相同,票券用以识别您和您的网络访问特权。当您进行一个基于 SEAM 的事务时 - 例如,如果您rlogin 到另一机器 - 您透明地向一个密钥分配中心, 或 KDC 发送一个票券请求,它们访问一个数据库,以鉴别您的身份。 KDC 返回一个票券,授予您访问其它机器的许可。 "透明地" 意思是指您不必明确请求一个票券; 这是作为 rlogin 命令的一部分而发生的。因为只有得到鉴别的客户机可以获得一个针对某个具体服务的票券,另一客户机无法以一个假装的身份使用 rlogin。
票券拥有某些与其相关联的属性。例如,一个票券可以是可转发 (即无需一个新的鉴别步骤就可以在另一机器上使用), 或 超期 (直到一个指定的时间才生效)。票券如何使用 - 例如,允许哪些用户获得哪些类型的票券 - 是由安装或管理 SEAM 时所确定的策略设定的。
您将频繁见到术语资格和票券。在更广泛的 Kerberos 世界中,这些术语经常是可以互相换用的。然而从技术上讲,资格是票券加上用于该对话的对话密钥。这一区别在 "借助 SEAM,获得对一个服务的访问" 有更加详细的解释。
下列各节简要解释 SEAM 鉴别步骤。
Kerberos 鉴别拥有两个阶段: 初始鉴别,允许所有后续的鉴别,以及后续的鉴别本身。
图形 1-1 显示初始鉴别是如何发生的:
一个客户机 (某个用户,或某项服务,诸如 NFS) 通过从密钥分配中心请求一个 具有票券授予权的票券 (TGT), 开始一个 SEAM 对话。这经常是在登录时自动完成的。
要获得用于具体服务的其它的票券,需要有一个具有票券授予权的票券。打个比方,请将具有票券授予权的票券想象为类似于护照。具有票券授予权的票券类似于一个护照,识别您并允许您获得无数的 "签证" - 这里的 "签证" (票券) 并非用于进入外国,而是用于远程机器或网络服务。具有票券授予权的票券及其它的各种各样票券类似于护照和签证,拥有有限的期限。其区别在于," Kerberized" 命令注意到您拥有一个护照,且为您获得签证- 您不必自己进行事务。
KDC 创建一个具有票券授予权的票券,并以加密的形式将其发回到客户机。客户机使用客户机的口令为该具有票券授予权的票券解密。
现在客户机持有一个有效的具有票券授予权的票券,就可以请求用于所有类型的网络操作的票券,诸如 rlogin 或 telnet, 只要具有票券授予权的票券最还有效。这通常是几个小时。每当客户机进行一个独特的网络操作时,其就从 KDC 为该操作请求一个票券。
在客户机业已收到初始鉴别之后,每个单个的鉴别就遵循 图形 1-2 中所显示的样式:
客户机为一个具体服务从 KDC 请求一个票券 (比如,为了 rlogin 到另一机器), 向 KDC 发送其具有票券授予权的票券,以证实其身份。
KDC 将用于具体服务的票券发送给客户机。
例如,假设用户 joe 在服务器 boston 上使用 rlogin。因为他业已得到鉴别 (即,他业已拥有一个具有票券授予权的票券), 就作为 rlogin 命令的一部分,自动而透明地获得一个票券。该票券允许他任意 rlogin 到 boston,直到到期。 如果 joe 想要 rlogin 到机器 denver, 他就获得另一票券,就象步骤 1 中那样。
客户机发送票券给服务器。
服务器允许客户机访问。
观察这些步骤,您可能业已注意到服务器似乎没有与 KDC 进行通信。但并非如此; 它借助 KDC 进行自我注册,就象第一个客户机那样。为简单明了起见,我们将这一部分省略掉了。
用户 (诸如 joe) 可以使用的基于 SEAM 的(或 " Kerberized") 命令有哪些? 有下列这些:
ftp
rcp
rlogin
rsh
telnet
这些应用程序与同名的 Solaris 应用程序相同,但其使用 Kerberos 授权对象来鉴别事务,从而提供基于 Kerberos 的安全。(请参见 "授权对象",了解有关授权对象的信息。)
下列命令在 "SEAM 命令" 中有进一步的论述。
SEAM 中的客户机是通过其 授权对象 来得以识别的。授权对象是一个独特的身份, KDC 可以向其分派票券。授权对象可以是一个用户,诸如 joe, 也可以是某项服务,诸如 nfs 或 telnet。
依照惯例,一个授权对象名称分为三个部分: primary、实例和 区域。例如,一个典型的 SEAM 授权对象有如 joe/admin@ENG.ACME.COM, 其中:
joe 是主干。这可以是一个用户名,如此处所示,也可以是某项服务,诸如 nfs。它还可以是单词 host, 指示这是一项服务授权对象,其业已设置为提供各种各样的网络服务 (ftp、rcp、rlogin, 等等)。
admin 是实例。如果是用户授权对象的情形,则实例是可选的,但对于服务授权对象却是必需的。例如: 如果用户 joe 有时作为一个系统管理员,他就可以使用 joe/admin 来将其自身从其通常的用户身份区分开。同样道理,如果joe在两个不同的服务器上拥有帐户,则其可以借助不同的实例,使用两个授权对象名称 (例如,joe/denver.acme.com 和 joe/boston.acme.com)。请注意, SEAM 将 joe 和 joe/admin 作为两个完全不同的授权对象。
如果是服务授权对象的情形,则实例就是完全合格的主机名。 bigmachine.eng.acme.com 就是此类实例的一个示例,因而举例而言, primary/instance 可能会是 ftp/bigmachine.eng.acme.com 或 host/bigmachine.eng.acme.com。
ENG.ACME.COM 是 SEAM 区域。区域在 "区域" 中有论述。
下列是所有有效的授权对象名称:
joe
joe/admin
joe/admin@ENG.ACME.COM
ftp/host.eng.acme.com@ENG.ACME.COM
host/eng.acme.com@ENG.ACME.COM
区域是一个逻辑网络,类似于一个域, 对同一 主 KDC 下的一组系统进行定义 (请参见下文)。 图形 1-3显示区域可以彼此联系。某些区域是分级的 (一个是另一个的超级)。否则区域就是非分级,而两个区域之间的映射必须得到定义。SEAM 的一个特性就是区域跨进行鉴别; 每个区域只需在其 KDC 中有一个针对另一区域的授权对象条目。
每个区域必须包括一个对授权对象数据库的主副本进行维护的服务器。这被称为 主 KDC 服务器。另外,每个区域应当至少包含一个 从 KDC 服务器, 其中包含授权对象数据库的复制副本。主和从 KDC 服务器两者均可以创建用于建立鉴别的票券。
区域还可以包括两个附加类型的 SEAM 服务器。 SEAM 网络 应用程序服务器 是一个向 Kerberized 应用程序 (诸如 ftp、telnet 和 rsh) 提供访问的服务器。区域还可以包括 NFS 服务器, 它借助 Kerberos 鉴别提供 NFS 服务。
图形 1-4 显示一个假想的区域可能会包含的内容。