该接口封装了单个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);