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);
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 对象的文本表示形式。 |
字段详细信息 |
---|
static final Oid NT_HOSTBASED_SERVICE
它表示以下 Oid 值:{ 1(iso), 3(org), 6(dod), 1(internet), 5(security), 6(nametypes), 2(gss-host-based-services) }
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) }
static final Oid NT_MACHINE_UID_NAME
它表示以下 Oid 值:{ iso(1) member-body(2) United States(840) mit(113554) infosys(1) gssapi(2) generic(1) machine_uid_name(2) }
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) }
static final Oid NT_ANONYMOUS
它表示以下 Oid 值:{ 1(iso), 3(org), 6(dod), 1(internet), 5(security), 6(nametypes), 3(gss-anonymous-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) }
方法详细信息 |
---|
boolean equals(GSSName another) throws GSSException
GSSName
对象,以确定它们是否指的是同一个实体。
another
- 将此名称与之比较的
GSSName
GSSException,当两个名称无法进行比较,包含以下主要错误代码时:{@link
- GSSException#BAD_NAMETYPE GSSException.BAD_NAMETYPE},
GSSException.FAILURE
GSSException
boolean equals(Object another)
GSSName
对象与可能是
GSSName
的另一个对象进行比较。此行为与
equals
中的行为完全相同,除了没有 GSSException 抛出;而在出现错误时将返回 false。
another
- 将此名称与之进行比较的对象
GSSName
并且两个名称都指的是同一个实体,则返回 true。
equals(GSSName)
int hashCode()
Object.equals(java.lang.Object)
,
Hashtable
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
byte[] export() throws GSSException
当在较大的访问控制列表(在此情况下,可以削减在每个名称上创建 GSSName
对象和从 ACL 中调用每个名称上的 equals 方法的开销)中使用时,导出的名称非常有用。
通过使用字节数组 factory 方法 GSSManager.createName
并将 NT_EXPORT_NAME 指定为名称类型对象标识符,可以重新导入导出的名称。得到的 GSSName
名称还将是一个 MN。
GSSException,包含以下主要错误代码:{@link
- GSSException#BAD_NAME GSSException.BAD_NAME}、
GSSException.BAD_NAMETYPE
、
GSSException.FAILURE
GSSException
String toString()
GSSName
对象的文本表示形式。要检索打印的名称格式(它确定了返回的字符串的语法),请使用
getStringNameType
方法。
Oid getStringNameType() throws GSSException
toString
方法中获取。
GSSException,包含以下主要错误代码:{@link
- GSSException#FAILURE GSSException.FAILURE}
GSSException
boolean isAnonymous()
boolean isMN()