JavaTM Platform
Standard Ed. 6

javax.security.sasl
인터페이스 SaslServer



public interface SaslServer

SASL 인증을 서버로서 실행합니다.

LDAP 서버와 같은 서버는, 특정의 SASL 기구에 의해 정의된 인증을 실행하기 위해서, 이 클래스의 인스턴스를 가져옵니다. SaslServer 인스턴스에 대한 메소드를 호출하면(자),SaslServer 에 의해 구현된 SASL 기구에 따라 챌린지가 작성됩니다. 인증이 처리될 때, SASL 서버의 인증 교환 상태가 암호화됩니다.

다음에, LDAP 서버가 어떻게 SaslServer 를 사용할까의 예를 나타냅니다. 우선, 클라이언트에 의해 요구된 SASL 기구의 SaslServer 인스턴스를 가져옵니다.

 SaslServer ss = Sasl.createSaslServer(mechanism,
     "ldap", myFQDN, props, callbackHandler);
이것으로, 서버를 인증에 사용할 수 있습니다. 예를 들어, LDAP 서버가 SASL 기구의 이름과 초기 응답 (생략 가능)을 포함한 LDAP BIND 요구를 수신했다고 하면(자), 서버를 다음과 같이 사용할 수 있습니다.
 while (! ss.isComplete()) {
     try {
         byte[] challenge = ss.evaluateResponse(response);
         if (ss.isComplete()) {
             status = ldap.sendBindResponse(mechanism, challenge, SUCCESS);
         } else {
             status = ldap.sendBindResponse(mechanism, challenge, 
                   SASL_BIND_IN_PROGRESS);
             response = ldap.readBindRequest();
         }
     } catch (SaslException e) {
            status = ldap.sendErrorResponse(e);
            break;
     }
 }
 if (ss.isComplete() && status == SUCCESS) {
    String qop = (String) sc.getNegotiatedProperty(Sasl.QOP);
    if (qop ! = null 
        && (qop.equalsIgnoreCase("auth-int") 
            || qop.equalsIgnoreCase("auth-conf"))) {

      // Use SaslServer.wrap() and SaslServer.unwrap() for future
      // communication with client
        ldap.in = new SecureInputStream(ss, ldap.in);
        ldap.out = new SecureOutputStream(ss, ldap.out);
    }
 }

도입된 버젼:
1.5
관련 항목:
Sasl , SaslServerFactory

메소드의 개요
 void dispose ()
          SaslServer 가 사용하고 있는 system resource 또는 시큐리티상 중요한 정보를 파기합니다.
 byte[] evaluateResponse (byte[] response)
          응답 데이터를 평가해, 챌린지를 작성합니다.
 String getAuthorizationID ()
          이 세션의 클라이언트에 유효한 승인 ID 를 보고합니다.
 String getMechanismName ()
          이 SASL 서버의 IANA 등록된 기구명 (CRAM-MD5, GSSAPI 등)을 돌려줍니다.
 Object getNegotiatedProperty (String  propName)
          네고시에이트 된 프로퍼티을 꺼냅니다.
 boolean isComplete ()
          인증 교환이 완료했는지의 여부를 판정합니다.
 byte[] unwrap (byte[] incoming, int offset, int len)
          클라이언트로부터 수신한 바이트 배열을 랩 해제합니다.
 byte[] wrap (byte[] outgoing, int offset, int len)
          클라이언트에 송신하는 바이트 배열을 랩 합니다.
 

메소드의 상세

getMechanismName

String  getMechanismName()
이 SASL 서버의 IANA 등록된 기구명 (CRAM-MD5, GSSAPI 등)을 돌려줍니다.

반환값:
IANA 등록된 기구명을 나타내는 null 이외의 캐릭터 라인

evaluateResponse

byte[] evaluateResponse(byte[] response)
                        throws SaslException 
응답 데이터를 평가해, 챌린지를 작성합니다. 인증 프로세스시에 클라이언트로부터의 응답을 수신하면(자), 클라이언트에 송신하는 다음의 적절한 챌린지를 준비하기 위해서, 이 메소드가 불려 갑니다. 인증에 성공해, 더 이상 클라이언트에 송신하는 챌린지 데이터가 없는 경우, 챌린지는 null 가 됩니다. 챌린지를 클라이언트에 송신해 인증을 속행할 필요가 있는 경우, 또는 인증에 성공했지만, 챌린지 데이터를 클라이언트로 처리할 필요가 있는 경우는 null 이외의 값이 됩니다. evaluateResponse() 를 호출한 뒤는, 클라이언트로부터의 응답이 한층 더 필요한가 어떤가를 판정하기 위해서 isComplete() 가 불려 갑니다.

파라미터:
response - 클라이언트로부터 송신되는 null 이외의 응답. 빈 상태(empty)의 경우도 있다
반환값:
클라이언트에 송신하는 챌린지 (null 의 경우도 있다). 인증에 성공해, 더 이상 클라이언트에 송신하는 챌린지 데이터가 없는 경우는 null 가 된다
예외:
SaslException - 응답의 처리시 또는 챌린지의 작성시에 에러가 발생했을 경우

isComplete

boolean isComplete()
인증 교환이 완료했는지의 여부를 판정합니다. 일반적으로은,evaluateResponse() 를 호출한 후에, 인증이 정상적으로 완료했는지, 속행할 필요가 있는지를 판정하기 위해서 불려 갑니다.

반환값:
인증 교환이 완료했을 경우는 true, 그렇지 않은 경우는 false

getAuthorizationID

String  getAuthorizationID()
이 세션의 클라이언트에 유효한 승인 ID 를 보고합니다. 이 메소드는, isComplete()가 true 를 돌려주었을 경우에게만 호출할 수가 있습니다.

반환값:
클라이언트의 승인 ID
예외:
IllegalStateException - 이 인증 세션이 완료하지 않았던 경우

unwrap

byte[] unwrap(byte[] incoming,
              int offset,
              int len)
              throws SaslException 
클라이언트로부터 수신한 바이트 배열을 랩 해제합니다. 이 메소드는, 인증 교환이 완료했다 (isComplete() 가 true 를 돌려준) 나중에, 인증 교환의 보호 품질로서 네고시에이트 된 무결성 또는 기밀성이 갖춰지고 있는 경우에게만 불려 갑니다. 그렇지 않은 경우는,IllegalStateException 가 throw 됩니다.

incoming 는, 길이를 나타내는 최초의 4 개의 8중창 필드를 제외한, RFC 2222 에 정의된 SASL 버퍼의 내용입니다. offsetlen 는,incoming 의 사용 부분을 지정합니다.

파라미터:
incoming - 클라이언트로부터 수신한 encode 된 바이트를 포함한 null 이외의 바이트 배열
offset - 사용하는 바이트의 incoming 에서의 개시 위치
len - 사용하는 incoming 의 바이트수
반환값:
복호화 된 바이트를 포함한 null 이외의 바이트 배열
예외:
SaslException - incoming 를 정상적으로 랩 해제할 수 없는 경우
IllegalStateException - 인증 교환이 완료하지 않았던 경우, 또는 네고시에이트 된 보호 품질에 무결성도 기밀성도 갖춰지지 않은 경우

wrap

byte[] wrap(byte[] outgoing,
            int offset,
            int len)
            throws SaslException 
클라이언트에 송신하는 바이트 배열을 랩 합니다. 이 메소드는, 인증 교환이 완료했다 (isComplete() 가 true 를 돌려준) 나중에, 인증 교환의 보호 품질로서 네고시에이트 된 무결성 또는 기밀성이 갖춰지고 있는 경우에게만 불려 갑니다. 그렇지 않은 경우는,SaslException 가 throw 됩니다.

이 메소드의 결과는, 길이를 나타내는 최초의 4 개의 8중창 필드를 제외한, RFC 2222 에 정의된 SASL 버퍼의 내용을 구성합니다. offsetlen 는,outgoing 의 사용 부분을 지정합니다.

파라미터:
outgoing - encode 하는 바이트를 포함한 null 이외의 바이트 배열
offset - 사용하는 바이트의 outgoing 에서의 개시 위치
len - 사용하는 outgoing 의 바이트수
반환값:
encode 된 바이트를 포함한 null 이외의 바이트 배열
예외:
SaslException - outgoing 를 정상적으로 랩 할 수 없는 경우
IllegalStateException - 인증 교환이 완료하지 않았던 경우, 또는 네고시에이트 된 보호 품질에 무결성도 기밀성도 갖춰지지 않은 경우

getNegotiatedProperty

Object  getNegotiatedProperty(String  propName)
네고시에이트 된 프로퍼티을 꺼냅니다. 이 메소드는, 인증 교환이 완료했다 (isComplete() 가 true 를 돌려준) 나중에 마셔 호출할 수가 있습니다. 그렇지 않은 경우는,IllegalStateException 가 throw 됩니다.

파라미터:
propName - 프로퍼티
반환값:
네고시에이트 된 프로퍼티의 값. null 의 경우는, 프로퍼티이 네고시에이트 되지 않았는지, 이 기구에 적용할 수 없다
예외:
IllegalStateException - 이 인증 교환이 완료하지 않았던 경우

dispose

void dispose()
             throws SaslException 
SaslServer 가 사용하고 있는 system resource 또는 시큐리티상 중요한 정보를 파기합니다. 이 메소드를 호출하면(자), SaslServer 인스턴스가 무효가 됩니다. 이 메소드나무등입니다.

예외:
SaslException - 자원을 파기하고 있을 때 문제가 발생했을 경우

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 도 참조해 주세요.