|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
| 개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 | |||||||||
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);
}
}
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)
클라이언트에 송신하는 바이트 배열을 랩 합니다. |
| 메소드의 상세 |
|---|
String getMechanismName()
byte[] evaluateResponse(byte[] response)
throws SaslException
response - 클라이언트로부터 송신되는 null 이외의 응답. 빈 상태(empty)의 경우도 있다
SaslException - 응답의 처리시 또는 챌린지의 작성시에 에러가 발생했을 경우boolean isComplete()
String getAuthorizationID()
IllegalStateException - 이 인증 세션이 완료하지 않았던 경우
byte[] unwrap(byte[] incoming,
int offset,
int len)
throws SaslException
incoming 는, 길이를 나타내는 최초의 4 개의 8중창 필드를 제외한, RFC 2222 에 정의된 SASL 버퍼의 내용입니다. offset 와 len 는,incoming 의 사용 부분을 지정합니다.
incoming - 클라이언트로부터 수신한 encode 된 바이트를 포함한 null 이외의 바이트 배열offset - 사용하는 바이트의 incoming 에서의 개시 위치len - 사용하는 incoming 의 바이트수
SaslException - incoming 를 정상적으로 랩 해제할 수 없는 경우
IllegalStateException - 인증 교환이 완료하지 않았던 경우, 또는 네고시에이트 된 보호 품질에 무결성도 기밀성도 갖춰지지 않은 경우
byte[] wrap(byte[] outgoing,
int offset,
int len)
throws SaslException
이 메소드의 결과는, 길이를 나타내는 최초의 4 개의 8중창 필드를 제외한, RFC 2222 에 정의된 SASL 버퍼의 내용을 구성합니다. offset 와 len 는,outgoing 의 사용 부분을 지정합니다.
outgoing - encode 하는 바이트를 포함한 null 이외의 바이트 배열offset - 사용하는 바이트의 outgoing 에서의 개시 위치len - 사용하는 outgoing 의 바이트수
SaslException - outgoing 를 정상적으로 랩 할 수 없는 경우
IllegalStateException - 인증 교환이 완료하지 않았던 경우, 또는 네고시에이트 된 보호 품질에 무결성도 기밀성도 갖춰지지 않은 경우Object getNegotiatedProperty(String propName)
propName - 프로퍼티
IllegalStateException - 이 인증 교환이 완료하지 않았던 경우
void dispose()
throws SaslException
SaslException - 자원을 파기하고 있을 때 문제가 발생했을 경우
|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
| 개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 | |||||||||
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.