Sun 企业鉴别机制指南

回调

可以使用 cookie 的另一个地方就是回调。服务器可以指定一个 (用户定义的) 回调,以便知道某个环境首次得到使用的时间,方法是通过使用 rpc_gss_set_callback() 函数。在为所指定的程序和版本建立环境之后,某个环境第一次用于数据交换时,就调用回调。

用户定义的回调例程具有下面的形式:

第二个和第三个变元, deleggss_context是 GSS-API 数据类型,且当前尚未对外披露,因而回调函数可以将其忽略。 (简而言之, deleg 是任何所代表的对等机的身份,而 gss_context 是一个到 GSS-API 环境的指针,以备程序想在环境上进行 GSS-API 操作 - 即,测试接受范畴。) 我们业已见过 cookie 变元。

lock 变元是到一个 rpc_gss_lock_t 结构的指针:

typedef struct {
 		bool_t              locked;
 		rpc_gss_rawcred_t   *raw_cred;
 } rpc_gss_lock_t;
该参数使得一个服务器为对话强制执行一个具体的 QOP 和服务。QOP 和服务见于 实例 8-5 中所描述的 rpc_gss_rawcred_t 结构。 (服务器不应更改服务和 QOP 的值。) 当用户定义的回调被调用时, locked 字段就设定为 FALSE。如果服务器将 locked 设定为 TRUE,则只有其 QOP 和rpc_gss_rawcred_t 结构中的服务值与 QOP 和服务值相匹配的请求被接受。

如要了解更多的信息,请参见 rpc_gss_set_callback(3N) 手册页。