JavaTM Platform
Standard Ed. 6

org.ietf.jgss
클래스 GSSManager

java.lang.Object 
  상위를 확장 org.ietf.jgss.GSSManager


public abstract class GSSManager
extends Object

이 클래스는, 다른 중요한 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 개의 방법을 상정하고 있습니다.

  1. 어플리케이션은, 사용하는 프로바이더를 고려하지 않는다 (디폴트)
  2. 어플리케이션은, 특정의 또는 임의의 기구를 사용할 경우에, 우선적으로 사용하는 프로바이더를 요구한다.
  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);
 

도입된 버젼:
1.4
관련 항목:
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
 

생성자 의 상세

GSSManager

public GSSManager()
메소드의 상세

getInstance

public static GSSManager  getInstance()
디폴트의 GSSManager 구현을 돌려줍니다.

반환값:
GSSManager 구현

getMechs

public abstract Oid [] getMechs()
이 GSSManager 를 통해 GSS-API 의 호출측을 이용할 수 있는 기구의 리스트를 돌려줍니다. getInstance() 메소드로부터 반환되는 디폴트의 GSSManager 의 리스트에는, OID 「1.2. 840.113554. 1.2. 2」가 포함되어 있습니다. 이 OID 는, RFC 1964 에 정의되고 있는 Kerberos v5 GSS-API 기구의 식별 ID 입니다.

반환값:
이용할 수 있는 기구에 대응하는 Oid 객체의 배열. 이용할 수 있는 기구가 없는 경우 (예를 들어, 기구가 동적으로 구성되기 (위해)때문에, 그 시점에서는 인스톨되어 있지 않은, 등) null 치가 반환된다

getNamesForMech

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
반환값:
이 기구가 지원하고 있는 이름형에 대응하는 Oid 객체의 배열
예외:
GSSException - 다음의 메이저 에러 코드를 포함한다. GSSException.BAD_MECH , GSSException.FAILURE
관련 항목:
getMechsForName(Oid)

getMechsForName

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
반환값:
지정된 이름형을 지원하고 있는 기구에 대응한다 Oid 객체의 배열. 지정된 이름형을 지원하고 있는 기구가 발견되지 않는 경우는,null 가 반환되는
관련 항목:
getNamesForMech(Oid)

createName

public abstract GSSName  createName(String  nameStr,
                                   Oid  nameType)
                            throws GSSException 
지정된 이름 공간의 캐릭터 라인명을 GSSName 객체로 변환하는 팩토리 메소드입니다. 작성된 GSSName 객체에는 일반적으로, 복수의 이름 표현 (지원되고 있는 기구 마다 1 개(살)씩)이 포함되어 있습니다. 다만, 이름 공간의 형태 파라미터에 NT_EXPORT_NAME 가 지정되고 있을 때, 또는 이 GSS-API 구현이 복수 기구가 아닌 경우 등은 예외입니다. 이 메소드는, NT_EXPORT_NAME 형에는 사용하지 말아 주세요. 이전에 export 된 이름이 임의의 바이트로 구성되는 경우, 그 이름을 String 로서 표현하면(자), 문자 인코딩 방식의 문제가 발생하는 것이 있기 때문에입니다. 이러한 이름을 변환하는 경우는, 이 메소드를 overload 한 createName 에 그러한 바이트를 직접 건네주는 것을 추천합니다.

파라미터:
nameStr - 작성하는 이름의 프린트 가능 형식을 나타낸다 캐릭터 라인
nameType - 지정된 프린트 가능명의 이름 공간을 지정한다 OID. nameStr 를 검사할 경우에, 각 기구 고유의 디폴트의 프린트 가능 구문을 사용하는 경우는,null 를 지정한다. 이름형 NT_EXPORT_NAME 는 가능한 한 사용하지 않는다
반환값:
지정된 주체를 나타내는 GSSName
예외:
GSSException - 다음의 메이저 에러 코드를 포함한다. GSSException.BAD_NAMETYPE , GSSException.BAD_NAME , GSSException.BAD_MECH , GSSException.FAILURE
관련 항목:
GSSName , GSSName.NT_EXPORT_NAME

createName

public abstract GSSName  createName(byte[] name,
                                   Oid  nameType)
                            throws GSSException 
지정된 이름 공간의 byte 배열을 GSSName 객체로 변환하는 팩토리 메소드입니다. 작성된 GSSName 객체에는 일반적으로, 복수의 이름 표현 (지원되고 있는 기구 마다 1 개(살)씩)이 포함되어 있습니다. 다만, 이름 공간의 형태 파라미터에 NT_EXPORT_NAME 가 지정되고 있을 때, 또는 이 GSS-API 구현이 복수 기구가 아닌 경우 등은 예외입니다. 건네받는 바이트는, 지정된 이름형에 선택되고 있는 인코딩 방식으로 응해, 부하의 각 기구에 의해 해석됩니다.

파라미터:
name - 작성하는 이름을 포함한 byte 배열
nameType - byte 배열로 지정된 이름의 이름 공간을 나타낸다 OID. byte 배열을 검사할 경우에, 각 기구 고유의 디폴트의 구문을 사용하는 경우는, null 를 지정한다
반환값:
지정된 주체를 나타내는 GSSName
예외:
GSSException - 다음의 메이저 에러 코드를 포함한다. GSSException.BAD_NAMETYPE , GSSException.BAD_NAME , GSSException.BAD_MECH , GSSException.FAILURE
관련 항목:
GSSName , GSSName.NT_EXPORT_NAME

createName

public abstract GSSName  createName(String  nameStr,
                                   Oid  nameType,
                                   Oid  mech)
                            throws GSSException 
지정된 이름 공간의 캐릭터 라인명을 GSSName 객체로 변환해, 그것을 기구에 대해서 표준화 하는 팩토리 메소드입니다. 즉, 이 메소드는,createName 메소드를 호출하고 나서 GSSName.canonicalize 메소드를 호출하는 경우와 같은 처리를 실행하는 유틸리티입니다.

파라미터:
nameStr - 작성하는 이름의 프린트 가능 형식을 나타낸다 캐릭터 라인
nameType - 지정된 프린트 가능명의 이름 공간을 지정한다 OID. nameStr 를 검사할 경우에, 각 기구 고유의 디폴트의 프린트 가능 구문을 사용하는 경우는,null 를 지정한다. 이름형 NT_EXPORT_NAME 는 가능한 한 사용하지 않는
mech - 기구를 나타내는 OID. 이 기구에 대해서 이름이 표준화 된다
반환값:
지정된 주체를 나타내는 GSSName
예외:
GSSException - 다음의 메이저 에러 코드를 포함한다. GSSException.BAD_NAMETYPE , GSSException.BAD_NAME , GSSException.BAD_MECH , GSSException.FAILURE
관련 항목:
GSSName.canonicalize(Oid) , GSSName.NT_EXPORT_NAME

createName

public abstract GSSName  createName(byte[] name,
                                   Oid  nameType,
                                   Oid  mech)
                            throws GSSException 
지정된 이름 공간의 이름을 포함한 byte 배열을 GSSName 객체로 변환해, 그것을 기구에 대해서 표준화 하는 팩토리 메소드입니다. 즉, 이 메소드는,createName 메소드를 호출하고 나서 GSSName.canonicalize 메소드를 호출하는 경우와 같은 처리를 실행하는 유틸리티입니다.

파라미터:
name - 작성하는 이름을 포함한 byte 배열
nameType - byte 배열로 지정된 이름의 이름 공간을 나타낸다 OID. byte 배열을 검사할 경우에, 각 기구 고유의 디폴트의 구문이 사용하는 경우는, null 를 지정하는
mech - 기구를 나타내는 OID. 이 기구에 대해서 이름이 표준화 된다
반환값:
지정된 주체를 나타내는 GSSName
예외:
GSSException - 다음의 메이저 에러 코드를 포함한다. GSSException.BAD_NAMETYPE , GSSException.BAD_NAME , GSSException.BAD_MECH , GSSException.FAILURE
관련 항목:
GSSName.canonicalize(Oid) , GSSName.NT_EXPORT_NAME

createCredential

public abstract GSSCredential  createCredential(int usage)
                                        throws GSSException 
디폴트의 자격을 취득하기 위한 팩토리 메소드입니다. 이 메소드를 호출하면(자), 기구, 이름, 및 수명의 편성에 대해서 시스템 고유의 디폴트가 사용됩니다.

GSS-API 의 기구 프로바이더는, 호출 측에 로컬 액세스 제어 정책를 적용하는 것으로써, 권한이 없는 호출측이 허가되어 있지 않은 자격을 취득하는 것을 방지할 필요가 있습니다. 각 기구 프로바이더가 필요로 하는 액세스권의 종류는, 기구 마다 문서에 정리하고 있습니다. 액세스권의 확인에 실패했을 경우, 이 메소드로부터 SecurityException 가 throw 됩니다.

파라미터:
usage - 이 자격 객체의 사용 목적. 이 파라미터의 값은, 다음의 언젠가가 아니면 안된다. GSSCredential.INITIATE_AND_ACCEPT , GSSCredential.ACCEPT_ONLY , GSSCredential.INITIATE_ONLY
반환값:
요구된 형태의 GSSCredential
예외:
GSSException - 다음의 메이저 에러 코드를 포함한다. GSSException.BAD_MECH , GSSException.BAD_NAMETYPE , GSSException.BAD_NAME , GSSException.CREDENTIALS_EXPIRED , GSSException.NO_CRED , GSSException.FAILURE
관련 항목:
GSSCredential

createCredential

public abstract GSSCredential  createCredential(GSSName  name,
                                               int lifetime,
                                               Oid  mech,
                                               int usage)
                                        throws GSSException 
기구의 자격을 1 개만 취득하기 위한 팩토리 메소드입니다.

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
반환값:
요구된 형태의 GSSCredential
예외:
GSSException - 다음의 메이저 에러 코드를 포함한다. GSSException.BAD_MECH , GSSException.BAD_NAMETYPE , GSSException.BAD_NAME , GSSException.CREDENTIALS_EXPIRED , GSSException.NO_CRED , GSSException.FAILURE
관련 항목:
GSSCredential

createCredential

public abstract GSSCredential  createCredential(GSSName  name,
                                               int lifetime,
                                               Oid [] mechs,
                                               int usage)
                                        throws GSSException 
복수의 기구에 대해서 자격을 취득하기 위한 팩토리 메소드입니다. 이 메소드는, 배열 mechs 로 지정된 기구 마다 자격을 취득하려고 합니다. 자격의 취득에 성공한 기구를 확인하려면 , 호출측에서 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
반환값:
요구된 형태의 GSSCredential
예외:
GSSException - 다음의 메이저 에러 코드를 포함한다. GSSException.BAD_MECH , GSSException.BAD_NAMETYPE , GSSException.BAD_NAME , GSSException.CREDENTIALS_EXPIRED , GSSException.NO_CRED , GSSException.FAILURE
관련 항목:
GSSCredential

createContext

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 (을)를 사용한다
반환값:
확립되어 있지 않은 GSSContext
예외:
GSSException - 다음의 메이저 에러 코드를 포함한다. GSSException.NO_CRED , GSSException.CREDENTIALS_EXPIRED , GSSException.BAD_NAMETYPE , GSSException.BAD_MECH , GSSException.FAILURE
관련 항목:
GSSContext

createContext

public abstract GSSContext  createContext(GSSCredential  myCred)
                                  throws GSSException 
받아 들이는 쪽으로 문맥을 작성하기 위한 팩토리 메소드입니다. 문맥의 프로퍼티은, 수락 메소드로 지정된 입력 토큰에 의해 정해집니다. 일부의 기구 프로바이더에서는, 시큐리티 문맥을 받아들이는 액세스권이 호출해 측에 부여되고 있을 필요가 있습니다. 액세스권의 확인에 실패했을 경우, 이 메소드로부터 SecurityException 가 throw 됩니다.

파라미터:
myCred - 받아 들이는 쪽의 자격. 디폴트의 받아 들이는 쪽 주체로서 기능시키는 경우는,null 를 사용한다
반환값:
확립되어 있지 않은 GSSContext
예외:
GSSException - 다음의 메이저 에러 코드를 포함한다. GSSException.NO_CRED , GSSException.CREDENTIALS_EXPIRED , GSSException.BAD_MECH , GSSException.FAILURE
관련 항목:
GSSContext

createContext

public abstract GSSContext  createContext(byte[] interProcessToken)
                                  throws GSSException 
이전에 export 된 문맥을 작성하기 위한 팩토리 메소드입니다. 문맥의 프로퍼티은, 입력 토큰에 의해 정해집니다. set 메소드를 사용해 변경할 수 없습니다.

시큐리티 문맥의 프로세스간 전송을 구현이 지원하는 것은 필수가 아닙니다. 문맥을 export 하기 전에 GSSContext.isTransferable 를 호출하면(자), 문맥을 전송 가능한가 어떤가를 알 수 있습니다. 문맥의 전송을 지원하고 있지 않는 구현으로 이 메소드를 호출하면(자), 에러 코드 GSSException.UNAVAILABLE 가 설정된 GSSException 가 throw 됩니다. 일부의 기구 프로바이더에서는, 시큐리티 문맥을 기동 또는 받아들이는 액세스권이 호출해 측에 부여되고 있을 필요가 있습니다. 액세스권의 확인에 실패했을 경우, 이 메소드로부터 SecurityException 가 throw 됩니다.

파라미터:
interProcessToken - 이전에 export 메소드로부터 생성되었다 토큰
반환값:
이전에 확립된 GSSContext
예외:
GSSException - 다음의 메이저 에러 코드를 포함한다. GSSException.NO_CONTEXT , GSSException.DEFECTIVE_TOKEN , GSSException.UNAVAILABLE , GSSException.UNAUTHORIZED , GSSException.FAILURE
관련 항목:
GSSContext

addProviderAtFront

public abstract void addProviderAtFront(Provider  p,
                                        Oid  mech)
                                 throws GSSException 
이 메소드를 사용해, 지원가 필요한 기구에 대해서 특정의 프로바이더를 우선해 사용하는 것을 GSSManager 로 설정합니다. 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

addProviderAtEnd

public abstract void addProviderAtEnd(Provider  p,
                                      Oid  mech)
                               throws GSSException 
이 메소드를 사용해, 지정된 기구를 지원하는 프로바이더가 발견되지 않을 때에 사용하는 프로바이더를, GSSManager 로 설정합니다. 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

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.