|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| ÀÌÀü Ŭ·¡½º ´ÙÀ½ Ŭ·¡½º | ÇÁ·¹ÀÓÀ¸·Î ÇÁ·¹ÀÓ ¾øÀÌ | |||||||||
| °³¿ä: NESTED | Çʵå | »ý¼ºÀÚ | ¸Þ¼µå | »ó¼¼: Çʵå | »ý¼ºÀÚ | ¸Þ¼µå | |||||||||
public interface SaslClient
SASL ÀÎÁõÀ» Ŭ¶óÀÌ¾ðÆ®·Î¼ ½ÇÇàÇÕ´Ï´Ù.
ÇÁ·ÎÅäÄÝ ¶óÀ̺귯¸® (LDAP ¶óÀ̺귯¸®µî)´Â ƯÁ¤ÀÇ SASL µµ±¸¿¡ ÀÇÇØ Á¤ÀÇµÈ ÀÎÁõÀ» ½ÇÇàÇϱâ À§Çؼ ÀÌ Å¬·¡½ºÀÇ ÀνºÅϽº¸¦ ÃëµæÇÕ´Ï´Ù. SaslClient ÀνºÅϽº¿¡ ´ëÇÑ ¸Þ¼µå¸¦ È£ÃâÇϸé, 縰Áö°¡ 󸮵ǾîSaslClient¿¡ ÀÇÇØ ±¸ÇöµÈ SASL µµ±¸¿¡ µû¶ó ÀÀ´äÀÌ ÀÛ¼ºµË´Ï´Ù. ÀÎÁõÀÌ Ã³¸®µÉ ¶§, SASL Ŭ¶óÀ̾ðÆ®ÀÇ ÀÎÁõ ±³È¯ »óŰ¡ ¾Ïȣȵ˴ϴÙ.
´ÙÀ½¿¡ LDAP ¶óÀ̺귯¸®°¡ ¾î¶»°Ô SaslClient¸¦ »ç¿ëÇÒ±îÀÇ ¿¹¸¦ ³ªÅ¸³À´Ï´Ù. ¿ì¼±, SaslClient ÀνºÅϽº¸¦ ÃëµæÇÕ´Ï´Ù.
À̰ÍÀ¸·Î Ŭ¶óÀÌ¾ðÆ®¸¦ ÀÎÁõ¿¡ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î LDAP ¶óÀ̺귯¸®´Â ´ÙÀ½°ú °°ÀÌ Å¬¶óÀÌ¾ðÆ®¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.SaslClient sc = Sasl.createSaslClient(mechanisms, authorizationId, protocol, serverName, props, callbackHandler);
// 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); } }
µµ±¸¿¡ Ãʱâ ÀÀ´äÀÌ Æ÷ÇԵǾî ÀÖ´Â °æ¿ì, ¶óÀ̺귯¸®´Â ºñ¾îÀִ ç¸°Áö·Î evaluateChallenge()¸¦ È£ÃâÇØ, Ãʱâ ÀÀ´äÀ» ÃëµæÇÕ´Ï´Ù. IMAP4 µîÀÇ ÇÁ·ÎÅäÄÝÀº ¼¹ö¿¡ÀÇ ÃÖÃÊÀÇ ÀÎÁõ Ä¿¸àµå¸¦ °¡Áö´Â Ãʱâ ÀÀ´äÀÌ Æ÷ÇÔµÇÁö ¾Ê±â ¶§¹®¿¡
ÃÖÃÊ·Î hasInitialResponse() ¶Ç´Â evaluateChallenge()¸¦ È£ÃâÇÏÁö ¸»°í ÀÎÁõÀ» °³½ÃÇÕ´Ï´Ù. ¼¹ö°¡ ÀÎÁõ Ä¿¸àµå¿¡ ÀÀ´äÇϸé, Ãʱâ 縰Áö°¡ ¼Û½ÅµË´Ï´Ù. Ŭ¶óÀÌ¾ðÆ®°¡ ÃÖÃÊ·Î µ¥ÀÌÅ͸¦ ¼Û½ÅÇÏ´Â SASL µµ±¸¿¡ ¼´Â ¼¹ö´Â µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏÁö ¾Ê´Â 縰Áö¸¦ ¹ßÇàÇØ µÎÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. °Å±â¿¡ µû¶ó, ºñ¾îÀִ ç¸°Áö¿¡
ÇÑ evaluateChallenge()¿¡
ÀÇ È£ÃâÀÌ Å¬¶óÀÌ¾ðÆ®·Î ÇàÇØÁý´Ï´Ù.
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 2 Platform Standard Ed. 5.0 |
|||||||||
| ÀÌÀü Ŭ·¡½º ´ÙÀ½ Ŭ·¡½º | ÇÁ·¹ÀÓÀ¸·Î ÇÁ·¹ÀÓ ¾øÀÌ | |||||||||
| °³¿ä: NESTED | Çʵå | »ý¼ºÀÚ | ¸Þ¼µå | »ó¼¼: Çʵå | »ý¼ºÀÚ | ¸Þ¼µå | |||||||||
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy µµ ÂüÁ¶ÇϽʽÿÀ.