服务器 授权对象名称。服务器的授权对象名称总是指定为一个 NULL 结尾的 ASCII 字符串,其格式为 服务@主机 - 例如, nfs@eng.acme.com。
当一个客户机创建一个安全环境时,它就以该格式指定服务器授权对象名称 (请参见 "创建一个环境")。与此类似,当一个服务器需要设定其将代表的一个授权对象的名称时,它就使用 rpc_gss_set_svc_name(),这接收该格式的一个授权对象名称,作为一个变元。
客户机 授权对象名称。一个客户机的授权对象名称,即服务器所收到的,其格式为 rpc_gss_principal_t 结构:一个经过计数的,不透明的字节字符串,由正在使用的机制加以确定。该结构在 rpcsec_gss(3N) 手册页上有描述。
服务器需要在启动时被告知其将代表的授权对象的名称。 (一个服务器可以作为一个以上的授权对象行事。) rpc_gss_set_svc_name() 设定授权对象的名称:
char *principal, *mechanism; u_int req_time; principal = "nfs@eng.acme.com"; mechanism = "kerberos_v5"; req_time = 10000; /* time for which credential should be valid */ rpc_gss_set_svc_name(principal, mechanism, req_time, SERV_PROG, SERV_VERS);
(Kerberos 忽略 req_time 参数。其它的鉴别系统可能会使用它。)
如要了解更多的信息,请参见 rpc_gss_set_svc_name(3N) 手册页。
服务器需要能够对一个客户机的授权对象名称进行操作 - 例如,为了将一个客户机的授权对象名称与一个访问控制列表进行比较,或为该客户机检索一个 UNIX 资格,如果此类的一个资格存在的话。该授权对象名称以 rpc_gss_principal_t 结构指针的形式得到保存。(请参见 rpcsec_gss(3N) 手册页,了解更多有关 rpc_gss_principal_t 的信息。) 如果一个服务器想要将其业已收到的一个授权对象名称与一个已知实体的名称进行比较,则其需要能够以该形式生成一个授权对象名称。
rpc_gss_get_principal_name() 调用将对网络上某个个体进行独特识别的多个参数作为输入,生成一个授权对象名称,作为一个 rpc_gss_principal_t 结构指针:
rpc_gss_principal_t *principal; rpc_gss_get_principal_name(principal, mechanism, name, node, domain); . . .
用于 rpc_gss_get_principal_name() 的变元如下:
授权对象 是一个到需要设定的 rpc_gss_principal_t 结构的指针。
机制 是所使用的安全机制 (请记住,所生成的授权对象名称是与机制有关的)。
名称 是一个个体或服务名称,诸如 joeh 或 nfs,乃至一个用户定义的应用程序的名称。
例如, node 可能会是一个 UNIX 机器名称。
例如, domain 可能会是一个 DNS, NIS, 或 NIS+ 域名,或者是一个 Kerberos 区域。
每个安全机制要求不同的识别参数。例如, Kerberos V5 要求一个用户名以及可选的合格节点和域的名称 (以 Kerberos 术语讲,就是主机和区域名)。
如要了解更多的信息,请参见 rpc_gss_get_principal_name(3N) 手册页。
授权对象名称是使用 释放() 库调用来加以释放的。