-
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
错误代码。
-
-
字段汇总
字段 变量和类型 字段 描述 static Oid
NT_ANONYMOUS
用于表示匿名实体的名称类型。static Oid
NT_EXPORT_NAME
用于指示export方法生成的导出名称的名称类型。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(Object another)
将此GSSName
对象与另一个可能是GSSName
Object进行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
用于指示export方法生成的导出名称的名称类型。它代表以下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)
将此GSSName
对象与另一个可能为GSSName
Object进行GSSName
。 行为与equals
中的行为完全相同,只是不抛出GSSException; 相反,在发生错误的情况下将返回false。- 重写:
-
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
,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。- 结果
- 包含导出名称的byte []。 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。
-
-