请考虑以下情况:服务器从客户机收到一个名称,并且需要在访问控制列表中查找该名称。 访问控制列表(即 ACL)是指具有特定访问权限的主体的列表。 下面是一种用于进行查找的方法:
使用 gss_import_name() 以 GSS-API 内部格式导入客户机名称(如果该名称尚未导入)。
在某些情况下,服务器将以内部格式接收名称,因此可不必执行该步骤。 例如,服务器可能会查找客户机本身的名称。 在启动上下文的过程中,客户机本身的名称以内部格式进行传递。
使用 gss_import_name() 将每个名称导入到 ACL 中。
此过程如下图所示。 在本示例中,假设步骤 1 是必需的。
如果只有少数名称,则可以接受使用上述单独比较名称的方法。 如果有大量名称,则使用 gss_canonicalize_name() 函数会更高效。 此方法会执行以下步骤:
使用 gss_import_name() 导入客户机的名称(如果该名称尚未导入)。
和上述比较名称的方法一样,如果名称已经采用内部格式,则不必执行此步骤。
使用 gss_canonicalize_name() 生成机制名称版本的客户机名称。
此过程如下图所示。 同样,再次假设服务器需要导入从客户机收到的名称。
由于 gss_export_name() 需要使用机制名称 (mechanism name, MN),因此 必须首先针对客户机名称运行 gss_canonicalize_name()。
有关更多信息,请参见 gss_export_name(3GSS)、gss_import_name(3GSS) 和 gss_canonicalize_name(3GSS)。