|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
java.lang.Objectorg.ietf.jgss.GSSManager
public abstract class GSSManager
이 클래스는, 다른 중요한 GSS-API 클래스의 팩토리로서 기능해, 지원되고 있는 기구에 관한 정보도 제공합니다. 또,GSSName
,GSSCredential
,GSSContext
라고 하는 3 개의 GSS-API 인터페이스를 구현하는 클래스의 인스턴스를 작성할 수 있습니다. 게다가 이용할 수 있는 기구의 일람 및 각 기구가 지원하고 있는 이름형을 조회하기 위한 메소드도 짜넣어지고 있습니다.
디폴트의 GSSManager
서브 클래스는, static 메소드 getInstance
를 사용해 인스턴스화할 수 있습니다. 디폴트 이외의 GSSManager
서브 클래스는, 어플리케이션으로부터 임의에 인스턴스화할 수 있습니다. 디폴트의 GSSManager
인스턴스에서는, Kerberos v5 등, 모든 GSS-API 기구가 지원됩니다. Kerberos v5 기구는, OID 「1.2. 840.113554. 1.2. 2」(으)로서 식별되어 RFC 1964 에 정의되고 있습니다.
GSSManager
추상 클래스의 확장으로서 작성한 서브 클래스는, 기존의 서비스 프로바이더 스펙을 이용하는, 모듈화된 프로바이더 베이스층으로서 구현됩니다. GSSManager
API 를 사용하면, 이러한 서브 클래스의 구현에 대해서 프로바이더의 우선 순위를 설정할 수 있습니다. 프로바이더 베이스의 구성이 지원되어 있지 않은 경우는, 명확하게 정의된 예외가 throw 됩니다. 어플리케이션을 이식할 가능성이 있는 경우는, 이것을 인식해, 예외를 캐치 하는 것에 의해, 적절히 회복할 필요가 있습니다.
프로바이더의 사용 방법으로서 다음의 3 개의 방법을 상정하고 있습니다.
GSSManager
클래스에는, 이러한 사용 모드를 유효하게 하기 위해서,addProviderAtFront
메소드와 addProviderAtEnd
메소드의 2 개가 준비되어 있습니다. 이러한 메소드를 실행하면(자), <프로바이더, OID> 라고 하는 페어의 순서 첨부 리스트가 작성됩니다. 각 페어는, 특정의 OID 에 우선적으로 사용되는 프로바이더를 나타내고 있습니다.
GSSManager 에 의해 작성된 GSS-API 객체간으로는, 대화를 합니다. 이 때, 특정의 기구에 사용되는 프로바이더를, 모든 객체로 사용해야 하는 것이 있습니다. 예를 들어, 어느 GSSCredential 가, 기구 m 에 사용되는 프로바이더 p 의 자격 요소로 구성되어 있다고 합니다. 이 자격은 일반적으로, 이 프로바이더 p 를 사용하는 GSSContext 에 건네줄 필요가 있습니다. 이식성을 최대화하려면 , 다른 GSSManager 로 작성한 객체를 혼재시키지 않는 것을 추천합니다. 객체를 벌써 작성한 GSSManager 상에서 addProviderAtFront
메소드를 호출하는 경우는, 할 수 있는 한 다른 GSSManager 인스턴스를 작성해 주세요.
다음의 코드예는, GSSManager 의 사용 방법을 나타내고 있습니다.
GSSManager manager = GSSManager.getInstance(); Oid krb5Mechanism = new Oid("1.2. 840.113554. 1.2. 2"); Oid krb5PrincipalNameType = new Oid("1.2. 840.113554. 1.2. 2.1"); // Identify who the client wishes to be GSSName userName = manager.createName("duke", GSSName.NT_USER_NAME); // Identify the name of the server. This uses a Kerberos specific // name format. GSSName serverName = manager.createName("nfs/foo.sun.com", krb5PrincipalNameType); // Acquire credentials for the user GSSCredential userCreds = manager.createCredential(userName, GSSCredential.DEFAULT_LIFETIME, krb5Mechanism, GSSCredential.INITIATE_ONLY); // Instantiate and initialize a security context that will be // established with the server GSSContext context = manager.createContext(serverName, krb5Mechanism, userCreds, GSSContext.DEFAULT_LIFETIME);
서버측에서는, 다음의 소스가 사용됩니다.
// Acquire credentials for the server GSSCredential serverCreds = manager.createCredential(serverName, GSSCredential.DEFAULT_LIFETIME, krb5Mechanism, GSSCredential.ACCEPT_ONLY); // Instantiate and initialize a security context that will // wait for an establishment request token from the client GSSContext context = manager.createContext(serverCreds);
GSSName
,
GSSCredential
,
GSSContext
생성자 의 개요 | |
---|---|
GSSManager ()
|
메소드의 개요 | |
---|---|
abstract void |
addProviderAtEnd (Provider p,
Oid mech)
이 메소드를 사용해, 지정된 기구를 지원하는 프로바이더가 발견되지 않을 때에 사용하는 프로바이더를, GSSManager 로 설정합니다. |
abstract void |
addProviderAtFront (Provider p,
Oid mech)
이 메소드를 사용해, 지원가 필요한 기구에 대해서 특정의 프로바이더를 우선해 사용하는 것을 GSSManager 로 설정합니다. |
abstract GSSContext |
createContext (byte[] interProcessToken)
이전에 export 된 문맥을 작성하기 위한 팩토리 메소드입니다. |
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)
기구의 자격을 1 개만 취득하기 위한 팩토리 메소드입니다. |
abstract GSSCredential |
createCredential (int usage)
디폴트의 자격을 취득하기 위한 팩토리 메소드입니다. |
abstract GSSName |
createName (byte[] name,
Oid nameType)
지정된 이름 공간의 byte 배열을 GSSName 객체로 변환하는 팩토리 메소드입니다. |
abstract GSSName |
createName (byte[] name,
Oid nameType,
Oid mech)
지정된 이름 공간의 이름을 포함한 byte 배열을 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)
지정된 기구가 지원하고 있는 이름형을 돌려줍니다. |
클래스 java.lang. Object 로부터 상속된 메소드 |
---|
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait |
생성자 의 상세 |
---|
public GSSManager()
메소드의 상세 |
---|
public static GSSManager getInstance()
public abstract Oid [] getMechs()
getInstance()
메소드로부터 반환되는 디폴트의 GSSManager 의 리스트에는, OID 「1.2. 840.113554. 1.2. 2」가 포함되어 있습니다. 이 OID 는, RFC 1964 에 정의되고 있는 Kerberos v5 GSS-API 기구의 식별 ID 입니다.
null
치가 반환된다public abstract Oid [] getNamesForMech(Oid mech) throws GSSException
디폴트의 GSSManager 인스턴스에서는, Kerberos v5 기구가 지원됩니다. 이 기구 ( 「1.2. 840.113554. 1.2. 2」)을 지정했을 경우는, 적어도 GSSName.NT_HOSTBASED_SERVICE
,GSSName.NT_EXPORT_NAME
, 및 Kerberos v5 고유의 OID 「1.2. 840.113554. 1.2. 2.1」을 포함한 이름형 리스트가 돌려주어집니다. OID 「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)
지정된 이름형이 GSSName.NT_HOSTBASED_SERVICE
,GSSName.NT_EXPORT_NAME
, 또는 「1.2. 840.113554. 1.2. 2.1」의 몇개의 경우, 이 리스트에는 항상 Kerberos v5 기구 ( 「1.2. 840.113554. 1.2. 2」)이 포함됩니다.
nameType
- 검색 대상의 이름형의 OID
null
가 반환되는getNamesForMech(Oid)
public abstract GSSName createName(String nameStr, Oid nameType) throws GSSException
GSSName
객체에는 일반적으로, 복수의 이름 표현 (지원되고 있는 기구 마다 1 개(살)씩)이 포함되어 있습니다. 다만, 이름 공간의 형태 파라미터에 NT_EXPORT_NAME 가 지정되고 있을 때, 또는 이 GSS-API 구현이 복수 기구가 아닌 경우 등은 예외입니다. 이 메소드는, NT_EXPORT_NAME 형에는 사용하지 말아 주세요. 이전에 export 된 이름이 임의의 바이트로 구성되는 경우, 그 이름을 String 로서 표현하면(자), 문자 인코딩 방식의 문제가 발생하는 것이 있기 때문에입니다. 이러한 이름을 변환하는 경우는, 이 메소드를 overload 한 createName
에 그러한 바이트를 직접 건네주는 것을 추천합니다.
nameStr
- 작성하는 이름의 프린트 가능 형식을 나타낸다
캐릭터 라인nameType
- 지정된 프린트 가능명의 이름 공간을 지정한다
OID.
nameStr 를 검사할 경우에, 각 기구 고유의 디폴트의 프린트 가능 구문을
사용하는 경우는,null
를 지정한다.
이름형 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
객체에는 일반적으로, 복수의 이름 표현 (지원되고 있는 기구 마다 1 개(살)씩)이 포함되어 있습니다. 다만, 이름 공간의 형태 파라미터에 NT_EXPORT_NAME 가 지정되고 있을 때, 또는 이 GSS-API 구현이 복수 기구가 아닌 경우 등은 예외입니다. 건네받는 바이트는, 지정된 이름형에 선택되고 있는 인코딩 방식으로 응해, 부하의 각 기구에 의해 해석됩니다.
name
- 작성하는 이름을 포함한 byte 배열nameType
- byte 배열로 지정된 이름의 이름 공간을 나타낸다
OID.
byte 배열을 검사할 경우에, 각 기구 고유의 디폴트의 구문을 사용하는 경우는,
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
- 지정된 프린트 가능명의 이름 공간을 지정한다
OID.
nameStr 를 검사할 경우에, 각 기구 고유의 디폴트의 프린트 가능 구문을
사용하는 경우는,null
를 지정한다.
이름형 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
- 작성하는 이름을 포함한 byte 배열nameType
- byte 배열로 지정된 이름의 이름 공간을 나타낸다
OID.
byte 배열을 검사할 경우에, 각 기구 고유의 디폴트의 구문이 사용하는 경우는,
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
가 throw 됩니다.
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
가 throw 됩니다.
디폴트 이외의 lifetime 치는 부하의 기구로 받아들일 수 없는 경우가 있습니다. 그 경우, 어플리케이션은, 반환된 자격에 대해서 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
가 throw 됩니다.
디폴트 이외의 lifetime 치는 부하의 기구로 받아들일 수 없는 경우가 있습니다. 그 경우, 어플리케이션은, 반환된 자격에 대해서 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
가 throw 됩니다.
디폴트 이외의 lifetime 치는 부하의 기구로 받아들일 수 없는 경우가 있습니다. 그 경우, 어플리케이션은, 반환된 문맥에 대해서 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
가 throw 됩니다.
myCred
- 받아 들이는 쪽의 자격. 디폴트의
받아 들이는 쪽 주체로서 기능시키는 경우는,null
를 사용한다
GSSException
- 다음의 메이저 에러 코드를
포함한다.
GSSException.NO_CRED
,
GSSException.CREDENTIALS_EXPIRED
,
GSSException.BAD_MECH
,
GSSException.FAILURE
GSSContext
public abstract GSSContext createContext(byte[] interProcessToken) throws GSSException
시큐리티 문맥의 프로세스간 전송을 구현이 지원하는 것은 필수가 아닙니다. 문맥을 export 하기 전에 GSSContext.isTransferable
를 호출하면(자), 문맥을 전송 가능한가 어떤가를 알 수 있습니다. 문맥의 전송을 지원하고 있지 않는 구현으로 이 메소드를 호출하면(자), 에러 코드 GSSException.UNAVAILABLE
가 설정된 GSSException
가 throw 됩니다.
일부의 기구 프로바이더에서는, 시큐리티 문맥을 기동 또는 받아들이는 액세스권이 호출해 측에 부여되고 있을 필요가 있습니다. 액세스권의 확인에 실패했을 경우, 이 메소드로부터 SecurityException
가 throw 됩니다.
interProcessToken
- 이전에 export 메소드로부터 생성되었다
토큰
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
는 아니고 null 치를 사용했을 때는, 사용하는 기구에 관계없이, 지정된 프로바이더가 우선해 사용됩니다. 지정된 프로바이더가 필요한 기구를 지원하고 있지 않는 경우에만, 다른 프로바이더가 사용됩니다. 이 메소드를 반복해 호출해도, 이전의 설정은 보관 유지됩니다.
이 메소드를 반복해 호출해도, 이전의 설정은 보관 유지됩니다. 다만, 그러한 우선 순위가 낮아져, 작성된 프로바이더와 Oid
의 페어의 순서 첨부 리스트가 최우선 됩니다.
Oid
에 null 를 지정해 addProviderAtFront 를 호출하면(자), GSSManager 인스턴스로 이 프로바이더로 설정된 이전의 우선 순위가 모두 삭제됩니다. Oid
에 null 이외의 값을 지정해 addProviderAtFront 를 호출하면(자), 이 기구와 이 프로바이더를 사용해 설정된 이전의 우선 순위가 모두 삭제됩니다.
GSSManager 구현이 플러그 인 가능한 프로바이더 아키텍쳐(architecture)를 갖춘 SPI 를 지원하고 있지 않는 경우는, 상태 코드 GSSException.UNAVAILABLE 가 설정된 GSSException 가 throw 되어 이 조작을 이용할 수 없는 것이 나타납니다.
예를 들어, 기구가 필요한 때는, 프로바이더 A 를 최초로 확인하도록(듯이) 설정하려면 , 다음의 호출을 실시합니다.
GSSManager mgr = GSSManager.getInstance(); // mgr may at this point have its own pre-configured list // of provider preferences. The following will prepend to // any such list: mgr.addProviderAtFront(A, null);이전으로 설정된 A 를 확인하기 전에, OID 가 m1 인 기구를 프로바이더 B 로부터 취득하는 경우는, 다음의 호출을 실시합니다.
mgr.addProviderAtFront(B, m1);GSSManager 는, m1 가 필요한 경우, 우선 B 를 확인합니다. B 가 m1 를 지원하고 있지 않는 경우는, 다음에 A 를 확인합니다. 기구 m2 가 필요해, m2 가 m1 와 다른 경우는, B 를 생략 해 직접 A 를 확인합니다.
예를 들어, 같은 GSSManager 인스턴스에 대해서, 다음의 호출을 실시한다고 합니다.
mgr.addProviderAtFront(B, null)페어 (B, m1)의 이전의 설정이 이 설정에 포함 되어, 삭제됩니다. 이 결과, 우선 순위의 리스트는 {(B, null), (A, null), ... //이전으로 설정된 리스트} 가 됩니다.
다만, 다음의 호출에는 주의해 주세요.
mgr.addProviderAtFront(A, m3)이 호출을 실행해도, 이전의 설정 (A, null)을 포함 하지 않고, 리스트는 {(A, m3), (B, null), (A, null), ...} (이)가 됩니다.
p
- mech 로 지정한 기구의 지원가 필요한 때에,
사용하는 프로바이더의 인스턴스mech
- 이 프로바이더가 설정되어 있는 기구
GSSException
- 다음의 메이저 에러 코드를
포함한다.
GSSException.UNAVAILABLE
,
GSSException.FAILURE
public abstract void addProviderAtEnd(Provider p, Oid mech) throws GSSException
Oid
는 아니고 null 치가 사용했을 때는, 지정된 프로바이더가 모든 기구에 사용됩니다.
이 메소드를 반복해 호출해도, 이전의 설정은 보관 유지됩니다. 다만, 그러한 우선 순위는 새로운 설정보다 높아져, 작성된 프로바이더와 Oid
의 페어의 순서 첨부 리스트의 우선 순위가 가장 낮아집니다. 즉, 이 리스트가 사용되기 전에, 우선 이전의 프로바이더 설정이 사용됩니다.
이전으로 설정한 기존의 우선 순위안에, 여기서 설정하는 우선 순위와 경합 하는 것이 있는 경우, 이 요구는 무시됩니다.
GSSManager 구현이 플러그 인 가능한 프로바이더 아키텍쳐(architecture)를 갖춘 SPI 를 지원하고 있지 않는 경우는, 상태 코드 GSSException.UNAVAILABLE 가 설정된 GSSException 가 throw 되어 이 조작을 이용할 수 없는 것이 나타납니다.
예를 들어, OID 가 m1 인 기구가 필요한 때는, 시스템의 디폴트 프로바이더를 최초로 확인해, m1 가 지원되어 있지 않을 때에만 프로바이더 A 를 확인하는 경우는, 다음의 호출을 실시합니다.
GSSManager mgr = GSSManager.getInstance(); mgr.addProviderAtEnd(A, m1);설정한 프로바이더를 모두 확인하고 나서, 모든 기구에 대해 프로바이더 B 를 확인하는 경우는, 다음의 호출을 실시합니다.
mgr.addProviderAtEnd(B, null);우선 순위의 리스트가,{..., (A, m1), (B, null)} 가 됩니다.
예를 들어, 같은 GSSManager 인스턴스에 대해서, 다음의 호출을 실시한다고 합니다.
mgr.addProviderAtEnd(B, m2)페어 (B, null)의 이전의 설정이 이 설정을 포함 해, 이 요구는 무시됩니다. 기존의 페어 (A, m1) 또는 (B, null)에 대해서 요구했을 경우도 같은 결과가 됩니다.
다만, 다음의 호출에는 주의해 주세요.
mgr.addProviderAtEnd(A, null)이 호출을 실행해도, 이전의 설정 (A, m1)에 의해 포함 되지 않고, 리스트는 {..., (A, m1), (B, null), (A, null)} 가 됩니다.
p
- mech 로 지정한 기구의 지원가 필요한 때에,
사용하는 프로바이더의 인스턴스mech
- 이 프로바이더가 설정되어 있는 기구
GSSException
- 다음의 메이저 에러 코드를
포함한다.
GSSException.UNAVAILABLE
,
GSSException.FAILURE
|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.