软件包  org.ietf.jgss

Interface GSSName



  • 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错误代码。
    从以下版本开始:
    1.4
    另请参见:
    export()equals(GSSName)GSSManager.createName(String, Oid)GSSManager.createName(String, Oid, Oid)GSSManager.createName(byte[], Oid)
    • 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_NAMETYPEGSSException.FAILURE
      • equals

        boolean equals​(Object another)
        与此相比GSSName对象的另一个对象可能是GSSName 该行为与equals完全相同,但不会抛出GSSException; 相反,在发生错误的情况下将返回false。
        重写:
        equalsObject
        参数
        another - 将此名称与之对比的对象
        结果
        如果要比较的对象也是一个 GSSName ,并且两个名称引用相同的实体,则为true。
        另请参见:
        equals(GSSName)
      • 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_NAMEGSSException.BAD_NAMETYPEGSSException.FAILURE
      • toString

        String toString​()
        返回GSSName对象的文本表示。 要检索确定返回字符串语法的打印名称格式,请使用getStringNameType方法。
        重写:
        toStringObject
        结果
        一个以可打印形式表示此名称的字符串。
      • 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。