软件包  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名称元件[email protected] ,则ServicePermission与服务主体host/[email protected] (和任何动作)必须被授予。 否则,创建将抛出GSSException含有GSSException.FAILURE错误代码。
    从以下版本开始:
    1.4
    另请参见:
    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
      用于指示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_NAMETYPEGSSException.FAILURE
      • equals

        boolean equals​(Object another)
        将此GSSName对象与另一个可能为GSSName Object进行GSSName 行为与equals的行为完全相同,只是不抛出GSSException; 相反,在发生错误的情况下将返回false。
        重写:
        equals在类 Object
        参数
        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。

        结果
        包含导出名称的byte []。 RFC 2743为这些字节定义了“与机制无关的导出名称对象格式”。
        异常
        GSSException -包含以下主要错误代码: GSSException.BAD_NAMEGSSException.BAD_NAMETYPEGSSException.FAILURE
      • toString

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