org.ietf.jgss

接口
异常
所有超级接口:
Cloneable

public interface GSSCredential
     
extends Cloneable

此接口将为实体封装 GSS-API 凭据。凭据包含所有必要的加密信息,这些信息使创建的上下文能够代表它所表示的实体。它可以包含多种不同的特定于机制的凭据元素,每种元素又包含有关特定的安全机制的信息,但所有这一切都指的是同一个实体。凭据可用来执行上下文初始化、接受(也可以同时执行二者)。

GSSManager 类中可使用其中的一种 createCredential 方法来初始化凭据。GSS-API 凭据的创建并不是为了提供“登录到网络”的功能,因为,此类功能会涉及到创建新的凭据,而不仅仅是获取对现有凭据的处理。package 级别介绍中的 section on credential acquisition 介绍了如何在 Java 平台中获取现有的凭据。GSS-API 实现必须对调用者实施本地访问控制策略,以防止未经授权的调用者获取他们无权获取的凭据。

应用程序将创建一个传输所需参数的凭据对象。然后应用程序可以使用查询方法来获取有关实例化的凭据对象的具体信息。当不需要凭据时,应用程序必须调用 dispose 方法来释该放凭据对象掌握的资源,并且销毁任何经过加密的敏感信息。

下面的示例代码演示了如何为特定的实体创建 GSSCredential 实现、查询其字段,以及不再需要它时如何释放它:

    GSSManager manager = GSSManager.getInstance();

    // start by creating a name object for the entity
    GSSName name = manager.createName("myusername", GSSName.NT_USER_NAME);

    // now acquire credentials for the entity
    GSSCredential cred = manager.createCredential(name,
                    GSSCredential.ACCEPT_ONLY);

    // display credential information - name, remaining lifetime,
    // and the mechanisms it has been acquired over
    System.out.println(cred.getName().toString());
    System.out.println(cred.getRemainingLifetime());

    Oid [] mechs = cred.getMechs();
    if (mechs != null) {
            for (int i = 0; i < mechs.length; i++)
                    System.out.println(mechs[i].toString());
    }

    // release system resources held by the credential
    cred.dispose();
 

从以下版本开始:
1.4
另请参见:
GSSManager.createCredential(int), GSSManager.createCredential(GSSName, int, Oid, int), GSSManager.createCredential(GSSName, int, Oid[], int), dispose()

字段摘要
static int ACCEPT_ONLY
          凭据使用标志,要求凭据仅可用于上下文接受。
static int DEFAULT_LIFETIME
          一个表示默认的凭据生存期的生存期常量。
static int INDEFINITE_LIFETIME
          一个表示不确定的凭据生存期的生存期常量。
static int INITIATE_AND_ACCEPT
          凭据使用标志,它要求凭据既可用于上下文初始化也可用于接受。
static int INITIATE_ONLY
          凭据使用标志,要求凭据仅可用于上下文初始化。
 
方法摘要
 void add(GSSName name, int initLifetime, int acceptLifetime, Oid mech, int usage)
          将特定于机制的凭据元素添加到现有的凭据中。
 void dispose()
          释放 GSSCredential 对象可能包含的任何敏感信息。
 boolean equals(Object another)
          进行测试,看此 GSSCredential 是否具有与提供的对象相同的实体。
 Oid[] getMechs()
          返回受此凭据支持的机制的列表。
 GSSName getName()
          检索凭据所维护的实体的名称。
 GSSName getName(Oid mech)
          检索凭据所维护的实体的 Mechanism Name(机制名称)。
 int getRemainingAcceptLifetime(Oid mech)
          返回凭据以秒为单位的生存期,以便能够继续使用指定的机制接受安全上下文。
 int getRemainingInitLifetime(Oid mech)
          返回凭据以秒为单位的生存期,以便能够继续使用指定的机制初始化安全上下文。
 int getRemainingLifetime()
          返回凭据所剩余的以秒为单位的生存期。
 int getUsage()
          返回凭据使用模式。
 int getUsage(Oid mech)
          返回特定机制的凭据使用模式。
 int hashCode()
          返回此 GSSCredential 的哈希码值。
 

字段详细信息

INITIATE_AND_ACCEPT

static final int INITIATE_AND_ACCEPT
凭据使用标志,它要求凭据既可用于上下文初始化也可用于接受。

另请参见:
常量字段值

INITIATE_ONLY

static final int INITIATE_ONLY
凭据使用标志,要求凭据仅可用于上下文初始化。

另请参见:
常量字段值

ACCEPT_ONLY

static final int ACCEPT_ONLY
凭据使用标志,要求凭据仅可用于上下文接受。

另请参见:
常量字段值

DEFAULT_LIFETIME

static final int DEFAULT_LIFETIME
一个表示默认的凭据生存期的生存期常量。此值被设置为 0。

另请参见:
常量字段值

INDEFINITE_LIFETIME

static final int INDEFINITE_LIFETIME
一个表示不确定的凭据生存期的生存期常量。在 Java 中必须将此值设置为最大整数值 -- Integer.MAX_VALUE

另请参见:
常量字段值
方法详细信息

dispose

void dispose()
             throws GSSException
释放 GSSCredential 对象可能包含的任何敏感信息。一旦不再需要某个凭据,应用程序就要立即调用此方法,以便将维护敏感信息所需的时间降至最低。

抛出:
GSSException,包含以下主要错误代码:{@link - GSSException#FAILURE GSSException.FAILURE}
GSSException

getName

GSSName getName()
                throws GSSException
检索凭据所维护的实体的名称。

返回:
一个代表该实体的 GSSName
抛出:
GSSException,包含以下主要错误代码:{@link - GSSException#FAILURE GSSException.FAILURE}
GSSException

getName

GSSName getName(Oid mech)
                throws GSSException
检索凭据所维护的实体的 Mechanism Name(机制名称)。这相当于对其他形式的 getName 返回的值调用 规范化

参数:
mech - 应该为其返回“Mechanism Name”的机制的 Oid。
返回:
一个表示已针对需要的机制对实体进行规范化的 GSSName
抛出:
GSSException,包含以下主要错误代码:{@link - GSSException#BAD_MECH GSSException.BAD_MECH}, GSSException.FAILURE
GSSException

getRemainingLifetime

int getRemainingLifetime()
                         throws GSSException
返回凭据所剩余的以秒为单位的生存期。在所有的特定于基础机制的凭据元素中,剩余生存期是最小的生存期。

返回:
此凭据所剩余的以秒为单位的生存期。返回 INDEFINITE_LIFETIME 一值表示凭据尚未到期。返回 0 值表示凭据已经过期。
抛出:
GSSException,包含以下主要错误代码:{@link - GSSException#FAILURE GSSException.FAILURE}
GSSException
另请参见:
getRemainingInitLifetime(Oid), getRemainingAcceptLifetime(Oid)

getRemainingInitLifetime

int getRemainingInitLifetime(Oid mech)
                             throws GSSException
返回凭据以秒为单位的生存期,以便能够继续使用指定的机制初始化安全上下文。此方法将查询属于指定机制的初始端凭据元素。

参数:
mech - 必须查询其初始端凭据元素的机制的 Oid。
返回:
在此凭据元素可以存留的秒数。返回 INDEFINITE_LIFETIME 值表示凭据元素尚未到期。返回 0 值表示凭据元素已经过期。
抛出:
GSSException,包含以下主要错误代码:{@link - GSSException#BAD_MECH GSSException.BAD_MECH}, GSSException.FAILURE
GSSException

getRemainingAcceptLifetime

int getRemainingAcceptLifetime(Oid mech)
                               throws GSSException
返回凭据以秒为单位的生存期,以便能够继续使用指定的机制接受安全上下文。此方法将查询属于指定机制的接受端凭据元素。

参数:
mech - 必须查询其接受端凭据元素的机制的 Oid。
返回:
此凭据元素存留的秒数。返回 INDEFINITE_LIFETIME 一值表示凭据元素尚未到期。返回 0 值表示凭据元素已经过期。
抛出:
GSSException,包含以下主要错误代码:{@link - GSSException#BAD_MECH GSSException.BAD_MECH}, GSSException.FAILURE
GSSException

getUsage

int getUsage()
             throws GSSException
返回凭据使用模式。换句话说,就是它可以告诉我们,此凭据是否可以用来初始化或接受安全上下文。但它无法告诉我们为了这样做必须使用哪(个)些机制。人们希望应用程序在调用此方法之后允许 GSS-API 挑选出默认的机制。

返回:
返回的值将是以下三者之一: INITIATE_ONLYACCEPT_ONLYINITIATE_AND_ACCEPT
抛出:
GSSException,包含以下主要错误代码:{@link - GSSException#FAILURE GSSException.FAILURE}
GSSException

getUsage

int getUsage(Oid mech)
             throws GSSException
返回特定机制的凭据使用模式。换句话说,就是它可以告诉我们,此凭据是否可以用来初始化或接受具有指定的基础机制的安全上下文。

参数:
mech - 其凭据使用模式需要确定的机制的 Oid。
返回:
返回的值将是以下三者之一: INITIATE_ONLYACCEPT_ONLYINITIATE_AND_ACCEPT
抛出:
GSSException,包含以下主要错误代码:{@link - GSSException#BAD_MECH GSSException.BAD_MECH}, GSSException.FAILURE
GSSException

getMechs

Oid[] getMechs()
               throws GSSException
返回受此凭据支持的机制的列表。但它无法告诉我们,哪些可用来初始化上下文,哪些可用来接受上下文。应用程序必须使用每个返回的 Oid 调用 getUsage 方法,以便确定可以使用的模式。

返回:
一个与受支持的机制一致的 Oid 的数组。
抛出:
GSSException,包含以下主要错误代码:{@link - GSSException#FAILURE GSSException.FAILURE}
GSSException

add

void add(GSSName name,
         int initLifetime,
         int acceptLifetime,
         Oid mech,
         int usage)
         throws GSSException
将特定于机制的凭据元素添加到现有的凭据中。此方法允许构建凭据,每次一个机制。

预计此例程主要由上下文接受端在创建接受端凭据时使用,这些凭据可用于使用不同安全机制的各种客户端。

此例程将添加这一新的凭据元素到合适的地方。为了将该元素添加到新的凭据中,首先要调用 clone 以获取此凭据的一个副本,然后再调用其 add 方法。

与以往一样,GSS-API 实现必须向调用者实施本地访问控制策略,以防止未经授权的调用者获取他们无权获取的凭据。 initLifetime 和 acceptLifetime 的非默认值并不总能得到基础机制的认可,因此,调用者必须准备调用凭据上的 getRemainingInitLifetimegetRemainingAcceptLifetime

参数:
name - 将为其获取此凭据的主体的名称。使用 null 来指定默认的主体。
initLifetime - 为初始化安全上下文,凭据元素应该保持有效的秒数。为此,请使用 GSSCredential.INDEFINITE_LIFETIME,以请求该凭据应具有最大允许生存期。为此,请使用 GSSCredential.DEFAULT_LIFETIME 请求默认的生存期。
acceptLifetime - 为接受安全上下文,凭据元素应该保持有效的秒数。为此,请使用 GSSCredential.INDEFINITE_LIFETIME,以请求该凭据应具有最大允许生存期。为此,请使用 GSSCredential.DEFAULT_LIFETIME 请求默认的生存期。
mech - 通过它获取凭据的机制。
usage - 此凭据元素应该添加到凭据所使用的使用模式。此参数的值必须是下列值之一: INITIATE_AND_ACCEPTACCEPT_ONLYINITIATE_ONLY
抛出:
GSSException,包含以下主要错误代码:{@link - GSSException#DUPLICATE_ELEMENT GSSException.DUPLICATE_ELEMENT}, GSSException.BAD_MECH, GSSException.BAD_NAMETYPE, GSSException.NO_CRED, GSSException.CREDENTIALS_EXPIRED, GSSException.FAILURE
GSSException

equals

boolean equals(Object another)
进行测试,看此 GSSCredential 是否具有与提供的对象相同的实体。这两个凭据必须通过相同的机制获取,并且必须指相同的主体。

覆盖:
Object 中的 equals
参数:
another - 与此 GSSCredential 进行比较的另外一个 GSSCredential
返回:
如果两个 GSSCredential 表示相同的实体,则返回 true;否则返回 false
另请参见:
Object.hashCode(), Hashtable

hashCode

int hashCode()
返回此 GSSCredential 的哈希码值。

覆盖:
Object 中的 hashCode
返回:
哈希码值
另请参见:
Object.equals(java.lang.Object), Hashtable