public abstract class GSSManager extends Object
GSSName
GSS-API接口,
GSSCredential
,和
GSSContext
。它也有方法来查询现有的机构名单,各机构的支持nametypes。
默认的GSSManager
子类的实例可以通过静态方法getInstance
获得,但应用程序是免费的其他子类实例化GSSManager
。默认GSSManager
实例将支持除其他Kerberos V5接口机制。这一机制是由老“1.2.840.113554.1.2.2“识别和RFC 1964中定义的。
一个扩展GSSManager
抽象类子类可以作为一个模块化供应商的基础层,利用一些众所周知的服务规范实施。的GSSManager
API允许应用程序设置供应商偏好这样的实现。这些方法也允许实现在不支持基于案例提供程序的配置中抛出一个定义良好的异常。期望是便携式的应用程序应该知道这一情况,并通过捕获异常恢复干净。
它设想将有三种最常见的方式,供应商将被使用:
的GSSManager
类有两个方法,使这些使用模式:addProviderAtFront
和addProviderAtEnd
。这些方法都建立供应商有序列表的效果,对每一对一个给定的OID表示偏好的供应商。
需要注意的是,有不同的接口对象,由gssmanager之间产生一定的相互作用,其中供应商,用于特定的机制可能需要在所有的对象是一致的。例如,如果一个gsscredential包含从供应商P元素的一个机构,一般要通过一个gsscontext将使用提供程序P的机制简单的经验法则,将最大限度地提高可移植性,对象不同GSSManager的创造不能混合,如果可能的话,不同的gssmanager实例应该如果应用程序需要调用的addProviderAtFront
方法在gssmanager已经创建了一个对象的创建。
这里是一些示例代码展示了如何gssmanager可能:
gssmanager经理= gssmanager。getinstance();老krb5mechanism =新的OID(“1.2.840.113554.1.2.2”);老krb5principalnametype =新的OID(“1.2.840.113554.1.2.2.1”);/确定客户希望成为谁gssname用户名为经理。createname(“公爵”,gssname。nt_user_name);/标识服务器的名称。使用Kerberos具体/ /名称格式。gssname ServerName =经理。createname(“NFS / foo。太阳。com”,krb5principalnametype);为用户获取凭据gsscredential usercreds =经理。createcredential(用户名,gsscredential.default_lifetime,krb5mechanism,gsscredential initiate_only);//实例化和初始化一个安全上下文,将/建立与服务器gsscontext上下文=经理。createcontext(ServerName,krb5mechanism,usercreds,gsscontext default_lifetime);
服务器端可能使用此源的下面的变化:
获取服务器的凭据gsscredential servercreds =经理。createcredential(ServerName,gsscredential.default_lifetime,krb5mechanism,gsscredential accept_only);//实例化和初始化一个安全上下文,从客户机上等待建立请求令牌gsscontext上下文=经理createcontext(servercreds);
GSSName
,
GSSCredential
,
GSSContext
Constructor and Description |
---|
GSSManager() |
Modifier and Type | Method and Description |
---|---|
abstract void |
addProviderAtEnd(Provider p, Oid mech)
这种方法是用来表示对gssmanager,应用将是一个提供程序用于在没有其他供应商可以发现支持给定的机制。
|
abstract void |
addProviderAtFront(Provider p, Oid mech)
这种方法是用来表示对gssmanager,应用将是一个提供程序用于超过所有其他人的支持时所需的特定机制。
|
abstract GSSContext |
createContext(byte[] interProcessToken)
用于创建先前导出的上下文的工厂方法。
|
abstract GSSContext |
createContext(GSSCredential myCred)
在接收器侧上创建上下文的工厂方法。
|
abstract GSSContext |
createContext(GSSName peer, Oid mech, GSSCredential myCred, int lifetime)
在引发方的边上创建上下文的工厂方法。
|
abstract GSSCredential |
createCredential(GSSName name, int lifetime, Oid[] mechs, int usage)
通过一组机制获取凭证的工厂方法。
|
abstract GSSCredential |
createCredential(GSSName name, int lifetime, Oid mech, int usage)
获取单机制凭证的工厂方法。
|
abstract GSSCredential |
createCredential(int usage)
获取默认凭据的工厂方法。
|
abstract GSSName |
createName(byte[] name, Oid nameType)
工厂方法将一个包含名称从指定的命名空间的一gssname对象的字节数组。
|
abstract GSSName |
createName(byte[] name, Oid nameType, Oid mech)
工厂方法包含从指定的命名空间名字一gssname对象的字节数组转换和规范这一机制的同时。
|
abstract GSSName |
createName(String nameStr, Oid nameType)
工厂方法将一个字符串的名字从指定的命名空间的一gssname对象。
|
abstract GSSName |
createName(String nameStr, Oid nameType, Oid mech)
工厂方法将一个字符串的名字从指定的命名空间的一gssname对象和规范在一个机构同时。
|
static GSSManager |
getInstance()
返回默认gssmanager实施。
|
abstract Oid[] |
getMechs()
返回一个列表,可以通过这个机制gssmanager GSS-API来电。
|
abstract Oid[] |
getMechsForName(Oid nameType)
返回一个支持指定名称类型的机制的列表。
|
abstract Oid[] |
getNamesForMech(Oid mech)
返回所表示的机制所支持的名称类型。
|
public static GSSManager getInstance()
public abstract Oid[] getMechs()
getInstance()
方法包括避免“1.2.840.113554.1.2.2”名单。该OID标识Kerberos V5接口机制,在RFC 1964中定义的。
null
值返回时没有机制是可用的(这方面的一个例子就是当机制进行动态配置,目前没有机构安装)。
public abstract Oid[] getNamesForMech(Oid mech) throws GSSException
默认gssmanager实例包括Kerberos V5支持机制。当这种机制(“1.2.840.113554.1.2.2”)表明,返回的列表至少包含以下nametypes:GSSName.NT_HOSTBASED_SERVICE
,GSSName.NT_EXPORT_NAME
,和Kerberos V5比老“1.2.840.113554.1.2.2.1”。为避免“1.2.840.113554.1.2.2.1”是在RFC 1964中定义的命名空间。
mech
-机构查询OID
GSSException
含有以下主要错误代码:
GSSException.BAD_MECH
GSSException.FAILURE
getMechsForName(Oid)
public abstract Oid[] getMechsForName(Oid nameType)
Kerberos V5机制(“1.2.840.113554.1.2.2”)总是会返回此列表中时,表明nameType是GSSName.NT_HOSTBASED_SERVICE
,GSSName.NT_EXPORT_NAME
,或“1.2.840.113554.1.2.2.1”。
nameType
-名称类型找老
null
返回时没有机制的发现支持指定的名称类型。
getNamesForMech(Oid)
public abstract GSSName createName(String nameStr, Oid nameType) throws GSSException
GSSName
对象创建将包含该名字多表示,每一个机构的支持;两个例子是例外是当命名空间中的类型参数指示nt_export_name或当GSS-API执行不多机制。这是不推荐使用这种方法nt_export_name型因为代表以前导出的名字任意字节组成的字符串可能会导致字符编码方案的问题。在这种情况下,建议的字节通过直接向重载形式这种方法
createName
。
nameStr
代表一个可打印的名字的形式来创建字符串。
nameType
-老指定的命名空间提供可打印的名字。
null
可用于指定一个特定的默认打印的语法机制应该由每个假设namestr机制探讨。建议使用nameType nt_export_name本方法是不。
GSSException
含有以下主要错误代码:
GSSException.BAD_NAMETYPE
,
GSSException.BAD_NAME
,
GSSException.BAD_MECH
,
GSSException.FAILURE
GSSName
,
GSSName.NT_EXPORT_NAME
public abstract GSSName createName(byte[] name, Oid nameType) throws GSSException
GSSName
对象创建将包含该名字多表示,每一个机构的支持;两个例子是例外是当命名空间中的类型参数指示nt_export_name或当GSS-API执行不多机制。这是通过在每个字节的解释机制按照一定的编码方案的选择对于给定的nameType。
name
含创建名称的字节数组
nameType
-老指定的字节数组中提供的名称的命名空间。
null
可用于指定一个特定的默认语法机制应该由每个机制假设检验的字节数组。
GSSException
:
GSSException.BAD_NAMETYPE
,
GSSException.BAD_NAME
,
GSSException.BAD_MECH
,
GSSException.FAILURE
GSSName
,
GSSName.NT_EXPORT_NAME
public abstract GSSName createName(String nameStr, Oid nameType, Oid mech) throws GSSException
createName
然后还
GSSName.canonicalize
。
nameStr
代表一个可打印的名字的形式来创建字符串。
nameType
-老指定的命名空间提供可打印的名字。
null
可用于指定一个特定的默认打印的语法机制应该由每个假设namestr机制探讨。建议使用nameType nt_export_name本方法是不。
mech
Oid指定机构的名称应规范化
GSSException
含有以下主要错误代码:
GSSException.BAD_NAMETYPE
,
GSSException.BAD_NAME
,
GSSException.BAD_MECH
,
GSSException.FAILURE
GSSName.canonicalize(Oid)
,
GSSName.NT_EXPORT_NAME
public abstract GSSName createName(byte[] name, Oid nameType, Oid mech) throws GSSException
createName
然后还
GSSName.canonicalize
。
name
含创建名称的字节数组
nameType
-老指定的字节数组中提供的名称的命名空间。
null
可用于指定一个特定的默认语法机制应该由每个机制假设检验的字节数组。
mech
Oid指定机构的名称应规范化
GSSException
:
GSSException.BAD_NAMETYPE
,
GSSException.BAD_NAME
,
GSSException.BAD_MECH
,
GSSException.FAILURE
GSSName.canonicalize(Oid)
,
GSSName.NT_EXPORT_NAME
public abstract GSSCredential createCredential(int usage) throws GSSException
供应商必须在调用GSS-API机制强加一个本地访问控制政策,防止未经授权的用户获得证书,他们没有权利。不同的机制提供人员所需的权限将被记录在每一个机制基础上。一个失败的权限检查可能导致SecurityException
是从这个方法引发。
usage
-使用此凭据对象。这个参数的值必须是:
GSSCredential.INITIATE_AND_ACCEPT
,
GSSCredential.ACCEPT_ONLY
,和
GSSCredential.INITIATE_ONLY
。
GSSException
含有以下主要错误代码:
GSSException.BAD_MECH
,
GSSException.BAD_NAMETYPE
,
GSSException.BAD_NAME
,
GSSException.CREDENTIALS_EXPIRED
,
GSSException.NO_CRED
,
GSSException.FAILURE
GSSCredential
public abstract GSSCredential createCredential(GSSName name, int lifetime, Oid mech, int usage) throws GSSException
供应商必须在调用GSS-API机制强加一个本地访问控制政策,防止未经授权的用户获得证书,他们没有权利。不同的机制提供人员所需的权限将被记录在每一个机制基础上。一个失败的权限检查可能导致SecurityException
是从这个方法引发。
一生非默认值总是不能兑现的机制,因此应用程序应该准备呼吁恢复证书getRemainingLifetime
。
name
-校长的名字就是这个证书是收购。使用
null
指定默认的主。
lifetime
的证书仍然有效的秒数。使用
GSSCredential.INDEFINITE_LIFETIME
要求凭据有允许的最大寿命。
GSSCredential.DEFAULT_LIFETIME
要求使用默认凭据的一生。
mech
-预期机制的OID。使用
(Oid) null
请求默认机制。
usage
-使用此凭据对象。这个参数的值必须是:
GSSCredential.INITIATE_AND_ACCEPT
,
GSSCredential.ACCEPT_ONLY
,和
GSSCredential.INITIATE_ONLY
。
GSSException
含有以下主要错误代码:
GSSException.BAD_MECH
,
GSSException.BAD_NAMETYPE
,
GSSException.BAD_NAME
,
GSSException.CREDENTIALS_EXPIRED
,
GSSException.NO_CRED
,
GSSException.FAILURE
GSSCredential
public abstract GSSCredential createCredential(GSSName name, int lifetime, Oid[] mechs, int usage) throws GSSException
GSSCredential.getMechs
方法。
供应商必须在调用GSS-API机制强加一个本地访问控制政策,防止未经授权的用户获得证书,他们没有权利。不同的机制提供人员所需的权限将被记录在每一个机制基础上。一个失败的权限检查可能导致SecurityException
是从这个方法引发。
一生非默认值总是不能兑现的机制,因此应用程序应该准备呼吁恢复证书getRemainingLifetime
。
name
-校长的名字就是这个证书是收购。使用
null
指定默认的主。
lifetime
的证书仍然有效的秒数。使用
GSSCredential.INDEFINITE_LIFETIME
要求凭据有允许的最大寿命。
GSSCredential.DEFAULT_LIFETIME
要求使用默认凭据的一生。
mechs
- Oid表示机制该证书是收购一个数组。使用
(Oid[]) null
请求一个特定系统的默认设置机制。
usage
-使用此凭据对象。这个参数的值必须是:
GSSCredential.INITIATE_AND_ACCEPT
,
GSSCredential.ACCEPT_ONLY
,和
GSSCredential.INITIATE_ONLY
。
GSSException
含有以下主要错误代码:
GSSException.BAD_MECH
,
GSSException.BAD_NAMETYPE
,
GSSException.BAD_NAME
,
GSSException.CREDENTIALS_EXPIRED
,
GSSException.NO_CRED
,
GSSException.FAILURE
GSSCredential
public abstract GSSContext createContext(GSSName peer, Oid mech, GSSCredential myCred, int lifetime) throws GSSException
SecurityException
是从这个方法引发。
一生非默认值总是不能兑现的机制,因此应用程序应该准备呼吁回到语境getLifetime
。
peer
-目标节点的名称。
mech
-预期机制的OID。使用
null
请求默认机制。
myCred
-引发剂的凭据。使用
null
作为默认启动器主。
lifetime
的一生,在几秒钟内,要求为背景。使用
GSSContext.INDEFINITE_LIFETIME
要求背景下,允许的最大寿命。使用
GSSContext.DEFAULT_LIFETIME
请求上下文默认寿命。
GSSException
含有以下主要错误代码:
GSSException.NO_CRED
GSSException.CREDENTIALS_EXPIRED
GSSException.BAD_NAMETYPE
GSSException.BAD_MECH
GSSException.FAILURE
GSSContext
public abstract GSSContext createContext(GSSCredential myCred) throws GSSException
SecurityException
是从这个方法引发。
myCred
-受体的凭据。使用
null
作为默认接受委托。
GSSException
:
GSSException.NO_CRED
GSSException.CREDENTIALS_EXPIRED
GSSException.BAD_MECH
GSSException.FAILURE
GSSContext
public abstract GSSContext createContext(byte[] interProcessToken) throws GSSException
实现不需要支持安全上下文的进程间传输。在出口方面,调用GSSContext.isTransferable
将表明,如果上下文转移。在一个不支持将导致一个错误代码GSSException.UNAVAILABLE
GSSException
实现调用此方法。一些机制提供方可能要求调用方授予启动或接受一个安全上下文的权限。一个失败的权限检查可能导致SecurityException
是从这个方法引发。
interProcessToken
-从出口方法之前发出的令牌。
GSSException
含有以下主要错误代码:
GSSException.NO_CONTEXT
,
GSSException.DEFECTIVE_TOKEN
,
GSSException.UNAVAILABLE
,
GSSException.UNAUTHORIZED
,
GSSException.FAILURE
GSSContext
public abstract void addProviderAtFront(Provider p, Oid mech) throws GSSException
Oid
,gssmanager必须超过所有其他人的不管是什么机制表明供应商使用。只有当指定的提供程序不支持所需的机制应该gssmanager移动到一个不同的供应商。
调用此方法反复保存旧设置但降低他们的偏好形成的有序列表提供者和Oid
对生长在顶端。
一个空的Oid
调用addprovideratfront将删除所有以前的喜好,设置该供应商在gssmanager实例。一个非空的Oid
调用addprovideratfront将删除任何以前的偏好,是利用这个机制和供应商一起。
如果gssmanager实现不支持SPI和插件提供商架构应该把gssexception与状态代码gssexception.unavailable表明操作不可用。
假设一个应用程序希望提供一个总是先检查当任何机制是必要的,它会调用:
gssmanager MGR = gssmanager。getinstance();/ /经理可能在这一点上有自己的预配置列表供应商的偏好。下面将前缀任何这样的清单:经理addprovideratfront(一空);现在如果还希望从供应商B前预先设定的一个检查是避免M1的机制总是会叫:
经理addprovideratfront(B,M1);的gssmanager将B先检查如果M1是必要的。在案例B中没有提供支持M1的gssmanager会继续检查A.如果任何机构需要的是M2,M2与M1然后gssmanager会跳过B、检查与直接。
想在以后的时间下面的调用了同一gssmanager实例:
经理addprovideratfront(B,null)然后对以前的设置(B,M1)被这个应该被删除。有效的首选项列表现在变成了{(b,空),(A,空),…随后的预配置列表。
请注意,但是,下面的调用:
经理addprovideratfront(一,M3)不包括以前的设置(一、空)和列表将有效地成为{(a,m),(B,null),(A,null),…}
p
-提供程序实例,应使用时需要支持机制。
mech
的机制,提供程序设置
GSSException
:
GSSException.UNAVAILABLE
,
GSSException.FAILURE
public abstract void addProviderAtEnd(Provider p, Oid mech) throws GSSException
调用此方法反复保留了旧的设置提高以上偏好形成的提供者和OID对生长在底部的有序列表更新。因此,旧的供应商设置将在第一次使用之前,这一个是。
如果有任何先前存在的偏好,偏好设置的冲突在这里,然后gssmanager应该忽略这个请求。
如果gssmanager实现不支持SPI和插件提供商架构应该把gssexception与状态代码gssexception.unavailable表明操作不可用。
假设一个应用程序所要求的,当一个OID M1机制需要系统默认供应商总是先检查,只有当他们不支持M1应提供者进行检查。然后,它会打电话:
gssmanager MGR = gssmanager。getinstance();经理addprovideratend(一,M1);现在,如果它还要求所有机构提供者B毕竟配置提供者已检查,它就会叫:
经理addprovideratend(B,null);有效名单的偏好变成{…,(一,M1)、(B、空)}。
想在以后的时间下面的调用了同一gssmanager实例:
经理addprovideratend(B,M2)然后对以前的设置(B,null)归入本因此请求应该被忽略。同样如果一个请求是由已经存在的对发生(一,M1)或(B,null)。
请注意,但是,下面的调用:
经理addprovideratend(一空)不归入前设置(一,M1)和列表将有效地成为{…,(一,M1),(B,null),(A,null)}
p
-提供程序实例,应使用时需要支持机制。
mech
的机制,提供程序设置
GSSException
含有以下主要错误代码:
GSSException.UNAVAILABLE
,
GSSException.FAILURE
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.