org.ietf.jgss

接口
异常
public interface GSSName

此接口将封装单一的 GSS-API 主体实体。应用程序将通过存在于GSSManager 类中的 createName 方法之一来获取此接口的实现。从概念上讲,GSSName 包含实体,或许多基本名称元素的表示形式,每个受支持的基础机制包含一个这样的表示形式。在 GSS 术语中,仅包含来自一种机制中的元素的 GSSName 称为机制名称 (MN)

由于不同的验证会使用不同的名称空间标识其主体,所以在多机制环境中 GSS-API 的命名支持有必要复杂一些(或者说,即使在某些基础机制要支持多名称空间的单一机制环境中也是如此)。不同的名称格式及其定义将使用 Oid's 来标识,而一些标准类型将在此接口中定义。名称的格式可以基于其名称类型唯一的 Oid 派生出来。

下面的代码中包含一些利用 GSSName 接口的代码示例。以下代码创建了一个 GSSName,然后将其转换为 MN,通过比较,获取该名称的可打印表示形式,将其导出到字节数组,然后再重新导入以获取一个新的 GSSName

      GSSManager manager = GSSManager.getInstance();

      // create a host based service name
      GSSName name = manager.createName("service@host",
                   GSSName.NT_HOSTBASED_SERVICE);

      Oid krb5 = new Oid("1.2.840.113554.1.2.2");

      GSSName mechName = name.canonicalize(krb5);
   
      // the above two steps are equivalent to the following
      GSSName mechName = manager.createName("service@host",
                      GSSName.NT_HOSTBASED_SERVICE, krb5);
   
      // perform name comparison
      if (name.equals(mechName))
              print("Names are equals.");
   
      // obtain textual representation of name and its printable
      // name type
      print(mechName.toString() +
                      mechName.getStringNameType().toString());
   
      // export and re-import the name
      byte [] exportName = mechName.export();
   
      // create a new name object from the exported buffer
      GSSName newName = manager.createName(exportName,
                      GSSName.NT_EXPORT_NAME);
   
 

从以下版本开始:
1.4
另请参见:
export(), equals(GSSName), GSSManager.createName(String, Oid), GSSManager.createName(String, Oid, Oid), GSSManager.createName(byte[], Oid)

字段摘要
static Oid NT_ANONYMOUS
          表示匿名实体的名称类型。
static Oid NT_EXPORT_NAME
          用来表示通过导出方法产生的导出名称的名称类型。
static Oid NT_HOSTBASED_SERVICE
          表示基于主机的服务名称格式的 Oid。
static Oid NT_MACHINE_UID_NAME
          名称类型,表示与本地系统上的用户对应的数值型用户标识符。
static Oid NT_STRING_UID_NAME
          名称类型,指示一个由数字组成的字符串,表示本地系统上用户的数值型用户标识符。
static Oid NT_USER_NAME
          名称类型,表示在本地系统上指定的用户。
 
方法摘要
 GSSName canonicalize(Oid mech)
          创建一个针对某种机制而规范化的名称。
 boolean equals(GSSName another)
          比较两个 GSSName 对象,以确定它们是否指的是同一个实体。
 boolean equals(Object another)
          将此 GSSName 对象与可能是 GSSName 的另一个对象进行比较。
 byte[] export()
          返回机制名称 (MN) 的规范化连续字节表示形式,适合通过授权的功能进行直接的、逐字节比较。
 Oid getStringNameType()
          返回此名称的可打印表示形式的名称类型,此名称可从 toString 方法中获取。
 int hashCode()
          返回此 GSSName 的哈希码值。
 boolean isAnonymous()
          测试此名称对象是否表示匿名的实体。
 boolean isMN()
          测试此名称对象是否表示一个机制名称 (MN)。
 String toString()
          返回 GSSName 对象的文本表示形式。
 

字段详细信息

NT_HOSTBASED_SERVICE

static final Oid NT_HOSTBASED_SERVICE
表示基于主机的服务名称格式的 Oid。用来表示与主计算机相关的服务。此名称格式由两种元素构成,即“服务”和“主机名称”,如下所示:service@hostname.

它表示以下 Oid 值:
{ 1(iso), 3(org), 6(dod), 1(internet), 5(security), 6(nametypes), 2(gss-host-based-services) }


NT_USER_NAME

static final Oid NT_USER_NAME
名称类型,表示在本地系统上指定的用户。

它表示以下 Oid 值:
{ iso(1) member-body(2) United States(840) mit(113554) infosys(1) gssapi(2) generic(1) user_name(1) }


NT_MACHINE_UID_NAME

static final Oid NT_MACHINE_UID_NAME
名称类型,表示与本地系统上的用户对应的数值型用户标识符。(例如,Uid)。

它表示以下 Oid 值:
{ iso(1) member-body(2) United States(840) mit(113554) infosys(1) gssapi(2) generic(1) machine_uid_name(2) }


NT_STRING_UID_NAME

static final Oid NT_STRING_UID_NAME
名称类型,指示一个由数字组成的字符串,表示本地系统上用户的数值型用户标识符。

它表示以下 Oid 值:
{ iso(1) member-body(2) United States(840) mit(113554) infosys(1) gssapi(2) generic(1) string_uid_name(3) }


NT_ANONYMOUS

static final Oid NT_ANONYMOUS
表示匿名实体的名称类型。

它表示以下 Oid 值:
{ 1(iso), 3(org), 6(dod), 1(internet), 5(security), 6(nametypes), 3(gss-anonymous-name) }


NT_EXPORT_NAME

static final Oid NT_EXPORT_NAME
用来表示通过导出方法产生的导出名称的名称类型。

它表示以下 Oid 值:
{ 1(iso), 3(org), 6(dod), 1(internet), 5(security), 6(nametypes), 4(gss-api-exported-name) }

方法详细信息

equals

boolean equals(GSSName another)
               throws GSSException
比较两个 GSSName 对象,以确定它们是否指的是同一个实体。

参数:
another - 将此名称与之比较的 GSSName
返回:
如果这两个名称至少包含一个共同的基本元素,则返回 true。如果这两个名称中的任一名称都表示匿名的实体,则该方法将返回 false。
抛出:
GSSException,当两个名称无法进行比较,包含以下主要错误代码时:{@link - GSSException#BAD_NAMETYPE GSSException.BAD_NAMETYPE}, GSSException.FAILURE
GSSException

equals

boolean equals(Object another)
将此 GSSName 对象与可能是 GSSName 的另一个对象进行比较。此行为与 equals 中的行为完全相同,除了没有 GSSException 抛出;而在出现错误时将返回 false。

覆盖:
Object 中的 equals
参数:
another - 将此名称与之进行比较的对象
返回:
如果将与之进行比较的对象也是 GSSName 并且两个名称都指的是同一个实体,则返回 true。
另请参见:
equals(GSSName)

hashCode

int hashCode()
返回此 GSSName 的哈希码值。

覆盖:
Object 中的 hashCode
返回:
哈希码值
另请参见:
Object.equals(java.lang.Object), Hashtable

canonicalize

GSSName canonicalize(Oid mech)
                     throws GSSException
创建一个针对某种机制而规范化的名称。

参数:
mech - 机制的 oid,要为该机制请求名称的规范化格式。
返回:
GSSName,它仅包含一种基本元素,该元素用所需机制的规范化格式表示此名称。
抛出:
GSSException,包含以下主要错误代码:{@link - GSSException#BAD_MECH GSSException.BAD_MECH}、@link GSSException#BAD_NAMETYPE GSSException.BAD_NAMETYPE}、@link GSSException#BAD_NAME GSSException.BAD_NAME}、@link GSSException#FAILURE GSSException.FAILURE}
GSSException

export

byte[] export()
              throws GSSException
返回机制名称 (MN) 的规范化连续字节表示形式,适合通过授权的功能进行直接的、逐字节比较。如果该名称不是 MN,则实现可能会抛出一个带有 NAME_NOT_MN 状态码的 GSSException。如果实现选择不抛出异常,则应该使用某些特定于系统的默认机制,以便规范化该名称,然后导出它。从结构上看,导出的名称对象由头部(它包含标识对名称进行验证的机制的 OID)和尾部(包含名称本身,其中,尾部的语法由每个机制规范定义)组成。输出缓冲的头的格式已在 RFC 2743 中指定。

当在较大的访问控制列表(在此情况下,可以削减在每个名称上创建 GSSName 对象和从 ACL 中调用每个名称上的 equals 方法的开销)中使用时,导出的名称非常有用。

通过使用字节数组 factory 方法 GSSManager.createName 并将 NT_EXPORT_NAME 指定为名称类型对象标识符,可以重新导入导出的名称。得到的 GSSName 名称还将是一个 MN。

返回:
一个包含导出的名称的 byte[]。RFC 2743 为这些字节定义了“Mechanism-Independent Exported Name Object Format”(独立于机制的导出名称对象格式)。
抛出:
GSSException,包含以下主要错误代码:{@link - GSSException#BAD_NAME GSSException.BAD_NAME}、 GSSException.BAD_NAMETYPEGSSException.FAILURE
GSSException

toString

String toString()
返回 GSSName 对象的文本表示形式。要检索打印的名称格式(它确定了返回的字符串的语法),请使用 getStringNameType 方法。

覆盖:
Object 中的 toString
返回:
一个用可打印格式表示此名称的字符串。

getStringNameType

Oid getStringNameType()
                      throws GSSException
返回此名称的可打印表示形式的名称类型,此名称可从 toString 方法中获取。

返回:
一个表示从 toString 方法中返回的名称的名称空间的 Oid。
抛出:
GSSException,包含以下主要错误代码:{@link - GSSException#FAILURE GSSException.FAILURE}
GSSException

isAnonymous

boolean isAnonymous()
测试此名称对象是否表示匿名的实体。

返回:
如果它是一个匿名的名称,则返回 true,否则返回 false。

isMN

boolean isMN()
测试此名称对象是否表示一个机制名称 (MN)。MN 是一个仅包含一种机制的基本名称元素的 GSSName。

返回:
如果是 MN,则返回 true,否则返回 false。