-
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);
如果安装了安全管理,以创造一个GSSName
包含Kerberos名称元素,而不提供其境界,一个ServicePermission
必须被授予和权限的服务主体必须至少是Kerberos名称元素的境界里。 例如,如果结果createName("user", NT_USER_NAME)
包含Kerberos名称元件user@EXAMPLE.COM
,则ServicePermission
与服务主体host/www.example.com@EXAMPLE.COM
(和任何动作)必须被授予。 否则,创建将抛出一个GSSException
包含GSSException.FAILURE
错误代码。
-
-
Field Summary
Fields Modifier and Type Field 描述 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
用于指示本地系统上的命名用户的名称类型。
-
方法摘要
所有方法 接口方法 抽象方法 Modifier and Type 方法 描述 GSSName
canonicalize(Oid mech)
创建一个为某种机制规范化的名称。boolean
equals(Object another)
与此相比GSSName
对象的另一个对象可能是GSSName
。boolean
equals(GSSName another)
比较两个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”构建,如下所示:service @ hostname。它代表以下Oid值:
{ iso(1) member-body(2) United States(840) mit(113554) infosys(1) gssapi(2) generic(1) service_name(4) }
-
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
-当名称所不能比拟的,包含以下主要错误代码:GSSException.BAD_NAMETYPE
,GSSException.FAILURE
-
equals
boolean equals(Object another)
- 重写:
-
equals
在Object
- 参数
-
another
- 将此名称与之对比的对象 - 结果
-
如果要比较的对象也是一个
GSSName
,并且两个名称引用相同的实体,则为true。 - 另请参见:
-
equals(GSSName)
-
hashCode
int hashCode()
返回此GSSName的哈希码值。- 重写:
-
hashCode
在Object
- 结果
- 一个hashCode值
- 另请参见:
-
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
-
canonicalize
GSSName canonicalize(Oid mech) throws GSSException
创建一个为某种机制规范化的名称。- 参数
-
mech
- 要求该名称的规范形式的机制的oid。 - 结果
-
一个
GSSName
,其中只包含一个代表该名称的原始元素,以规范化的形式表示所需的机制。 - 异常
-
GSSException
-包含以下主要错误代码:GSSException.BAD_MECH
,GSSException.BAD_NAMETYPE
,GSSException.BAD_NAME
,GSSException.FAILURE
-
export
byte[] export() throws GSSException
返回机制名称(MN)的规范连续字节表示,适用于通过授权功能直接逐字节比较。 如果名称不是MN,则实现可能会导致具有NAME_NOT_MN状态代码的GSSException。 如果一个实现选择不抛出异常,它应该使用一些系统特定的默认机制来规范名称,然后导出它。 在结构上,导出的名称对象由包含标识认证名称的机制的OID的标头和包含名称本身的预告片组成,其中拖尾的语法由各个机构规范定义。 输出缓冲区头的格式在RFC 2743中规定。导出的名称在大型访问控制列表中使用时很有用,其中每个名称上创建一个
GSSName
对象的开销以及从ACL中的每个名称调用equals方法可能是禁止的。可以使用字节数组工厂方法
GSSManager.createName
重新导入导出的名称,并将NT_EXPORT_NAME指定为名称类型对象标识符。 所得的GSSName
名称也将是MN。- 结果
- 一个包含导出的名称的字节[]。 RFC 2743为这些字节定义了“机制独立的导出名称对象格式”。
- 异常
-
GSSException
-包含以下主要错误代码:GSSException.BAD_NAME
,GSSException.BAD_NAMETYPE
,GSSException.FAILURE
-
toString
String toString()
返回GSSName
对象的文本表示。 要检索确定返回字符串语法的打印名称格式,请使用getStringNameType
方法。
-
getStringNameType
Oid getStringNameType() throws GSSException
返回可从toString
方法获得的该名称的可打印表示的名称类型。- 结果
- 一个Oid表示从toString方法返回的名称的名称空间。
- 异常
-
GSSException
- 包含以下主要错误代码:GSSException.FAILURE
-
isAnonymous
boolean isAnonymous()
测试此名称对象是否表示匿名实体。- 结果
- 如果这是匿名名称,则为true,否则为false。
-
isMN
boolean isMN()
测试此名称对象是否表示机制名称(MN)。 MN是一个GSSName,它只包含一个机制的原始名称元素。- 结果
- 如果这是MN,则为true,否则为false。
-
-