|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
public interface SaslClient
SASL 인증을 클라이언트로서 실행합니다.
프로토콜 라이브러리 (LDAP 라이브러리등)는, 특정의 SASL 기구에 의해 정의된 인증을 실행하기 위해서, 이 클래스의 인스턴스를 가져옵니다. SaslClient 인스턴스에 대한 메소드를 호출하면(자), 챌린지가 처리되어SaslClient 에 의해 구현된 SASL 기구에 따라 응답이 작성됩니다. 인증이 처리될 때, SASL 클라이언트의 인증 교환 상태가 암호화됩니다.
다음에, LDAP 라이브러리가 어떻게 SaslClient 를 사용할까의 예를 나타냅니다. 우선,SaslClient 의 인스턴스를 가져옵니다.
이것으로, 클라이언트를 인증에 사용할 수 있습니다. 예를 들어, LDAP 라이브러리는 다음과 같이 클라이언트를 사용할 수 있습니다.SaslClient sc = Sasl.createSaslClient(mechanisms, authorizationId, protocol, serverName, props, callbackHandler);
기구에 초기 응답이 포함되어 있는 경우, 라이브러리는 빈 상태(empty)의 챌린지로 evaluateChallenge() 를 호출해, 초기 응답을 가져옵니다. IMAP4 등의 프로토콜은, 서버에의 최초의 인증 커멘드를 가지는 초기 응답이 포함되지 않기 때문에, 최초로 hasInitialResponse() 또는 evaluateChallenge() 를 호출하지 말고 인증을 개시합니다. 서버가 인증 커멘드에 응답하면(자), 초기 챌린지가 송신됩니다. 클라이언트가 최초로 데이터를 송신하는 SASL 기구에서는, 서버는 데이터를 포함하지 않는 챌린지를 발행해 두지 않으면 안됩니다. 거기에 따라, 빈 상태(empty)의 챌린지에 의한 evaluateChallenge() 에의 호출이 클라이언트로 행해집니다.// Get initial response and send to server byte[] response = (sc.hasInitialResponse() ? sc.evaluateChallenge(new byte[0]) : null); LdapResult res = ldap.sendBindRequest(dn, sc.getName(), response); while (! sc.isComplete() && (res.status == SASL_BIND_IN_PROGRESS || res.status == SUCCESS)) { response = sc.evaluateChallenge(res.getBytes()); if (res.status == SUCCESS) { // we're done; don't expect to send another BIND if (response ! = null) { throw new SaslException( "Protocol error: attempting to send response after completion"); } break; } res = ldap.sendBindRequest(dn, sc.getName(), response); } if (sc.isComplete() && res.status == SUCCESS) { String qop = (String) sc.getNegotiatedProperty(Sasl.QOP); if (qop ! = null && (qop.equalsIgnoreCase("auth-int") || qop.equalsIgnoreCase("auth-conf"))) { // Use SaslClient.wrap() and SaslClient.unwrap() for future // communication with server ldap.in = new SecureInputStream(sc, ldap.in); ldap.out = new SecureOutputStream(sc, ldap.out); } }
Sasl
,
SaslClientFactory
메소드의 개요 | |
---|---|
void |
dispose ()
SaslClient 가 사용하고 있는 system resource 또는 시큐리티상 중요한 정보를 파기합니다. |
byte[] |
evaluateChallenge (byte[] challenge)
챌린지 데이터를 평가해, 응답을 작성합니다. |
String |
getMechanismName ()
이 SASL 클라이언트의 IANA 등록된 기구명 (CRAM-MD5, GSSAPI 등)을 돌려줍니다. |
Object |
getNegotiatedProperty (String propName)
네고시에이트 된 프로퍼티을 꺼냅니다. |
boolean |
hasInitialResponse ()
이 기구에 옵션의 초기 응답이 포함되어 있는지 어떤지를 조사합니다. |
boolean |
isComplete ()
인증 교환이 완료했는지의 여부를 판정합니다. |
byte[] |
unwrap (byte[] incoming,
int offset,
int len)
서버로부터 수신한 바이트 배열을 랩 해제합니다. |
byte[] |
wrap (byte[] outgoing,
int offset,
int len)
서버에 송신하는 바이트 배열을 랩 합니다. |
메소드의 상세 |
---|
String getMechanismName()
boolean hasInitialResponse()
byte[] evaluateChallenge(byte[] challenge) throws SaslException
challenge
- 서버로부터 송신된 null 이외의 챌린지.
챌린지 배열의 길이는 0 의 경우도 있다
SaslException
- 챌린지의 처리시 또는 응답의 작성시에 에러가 발생했을 경우boolean isComplete()
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
- null 이외의 프로퍼티명
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 도 참조해 주세요.