JavaTM 2 Platform
Standard Ed. 5.0

javax.security.sasl
ÀÎÅÍÆäÀ̽º SaslClient


public interface SaslClient

SASL ÀÎÁõÀ» Ŭ¶óÀ̾ðÆ®·Î¼­ ½ÇÇàÇÕ´Ï´Ù.

ÇÁ·ÎÅäÄÝ ¶óÀ̺귯¸® (LDAP ¶óÀ̺귯¸®µî)´Â ƯÁ¤ÀÇ SASL µµ±¸¿¡ ÀÇÇØ Á¤ÀÇµÈ ÀÎÁõÀ» ½ÇÇàÇϱâ À§Çؼ­ ÀÌ Å¬·¡½ºÀÇ ÀνºÅϽº¸¦ ÃëµæÇÕ´Ï´Ù. SaslClient ÀνºÅϽº¿¡ ´ëÇÑ ¸Þ¼­µå¸¦ È£ÃâÇϸé, 縰Áö°¡ 󸮵ǾîSaslClient¿¡ ÀÇÇØ ±¸ÇöµÈ SASL µµ±¸¿¡ µû¶ó ÀÀ´äÀÌ ÀÛ¼ºµË´Ï´Ù. ÀÎÁõÀÌ Ã³¸®µÉ ¶§, SASL Ŭ¶óÀ̾ðÆ®ÀÇ ÀÎÁõ ±³È¯ »óÅ°¡ ¾ÏȣȭµË´Ï´Ù.

´ÙÀ½¿¡ LDAP ¶óÀ̺귯¸®°¡ ¾î¶»°Ô SaslClient¸¦ »ç¿ëÇÒ±îÀÇ ¿¹¸¦ ³ªÅ¸³À´Ï´Ù. ¿ì¼±, SaslClient ÀνºÅϽº¸¦ ÃëµæÇÕ´Ï´Ù.

 SaslClient sc = Sasl.createSaslClient(mechanisms, authorizationId, protocol, serverName, props, callbackHandler);
ÀÌ°ÍÀ¸·Î Ŭ¶óÀ̾ðÆ®¸¦ ÀÎÁõ¿¡ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î LDAP ¶óÀ̺귯¸®´Â ´ÙÀ½°ú °°ÀÌ Å¬¶óÀ̾ðÆ®¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
 // 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()¿¡ ÀÇ È£ÃâÀÌ Å¬¶óÀ̾ðÆ®·Î ÇàÇØÁý´Ï´Ù.

µµÀÔµÈ ¹öÀü :
1.5
°ü·Ã Ç׸ñ:
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)
          ¼­¹ö¿¡ ¼Û½ÅÇÏ´Â ¹ÙÀÌÆ® ¹è¿­À» ·¦ ÇÕ´Ï´Ù.
 

¸Þ¼­µåÀÇ »ó¼¼

getMechanismName

String  getMechanismName()
ÀÌ SASL Ŭ¶óÀ̾ðÆ®ÀÇ IANA µî·ÏµÈ µµ±¸ ¸í (CRAM-MD5, GSSAPI µî)À» ¸®ÅÏÇÕ´Ï´Ù.

¹Ýȯ°ª:
IANA µî·ÏµÈ µµ±¸ ¸íÀ» ³ªÅ¸³»´Â null ÀÌ¿ÜÀÇ Ä³¸¯ÅÍ ¶óÀÎ

hasInitialResponse

boolean hasInitialResponse()
ÀÌ µµ±¸¿¡ ¿É¼ÇÀÇ Ãʱâ ÀÀ´äÀÌ Æ÷ÇԵǾî ÀÖ´ÂÁö¸¦ Á¶»çÇÕ´Ï´Ù. trueÀÎ °æ¿ì, È£ÃâÃøÀº Ãʱâ ÀÀ´äÀ» ÃëµæÇϱâ À§Çؼ­ ºñ¾îÀÖ´Â ¹è¿­·Î evaluateChallenge()¸¦ È£ÃâÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù.

¹Ýȯ°ª:
ÀÌ µµ±¸¿¡ Ãʱâ ÀÀ´äÀÌ Æ÷ÇԵǾî ÀÖ´Â °æ¿ì´Â true

evaluateChallenge

byte[] evaluateChallenge(byte[] challenge)
                         throws SaslException 
縰Áö µ¥ÀÌÅ͸¦ Æò°¡ÇØ, ÀÀ´äÀ» ÀÛ¼ºÇÕ´Ï´Ù. ÀÎÁõ ÇÁ·Î¼¼½º½Ã¿¡ 縰Áö°¡ ¼­¹ö·ÎºÎÅÍ ¼ö½ÅµÇ¾úÀ» °æ¿ì´Â ¼­¹ö¿¡ ¼Û½ÅÇÏ´Â ´ÙÀ½ÀÇ ÀûÀýÇÑ ÀÀ´äÀ» ÁغñÇϱâ À§Çؼ­ ÀÌ ¸Þ¼­µå°¡ È£ÃâµË´Ï´Ù.

ÆĶó¹ÌÅÍ:
challenge - ¼­¹ö·ÎºÎÅÍ ¼Û½ÅµÈ null ÀÌ¿ÜÀÇ Ã§¸°Áö. 縰Áö ¹è¿­ÀÇ ±æÀÌ´Â 0ÀÎ °æ¿ìµµ ÀÖ´Ù
¹Ýȯ°ª:
¼­¹ö¿¡ ¼Û½ÅÇÏ´Â ÀÀ´ä (nullÀÎ °æ¿ìµµ ÀÖ´Ù). 縰Áö°¡ ¡¸SUCCESS¡¹»óŸ¦ ¼ö¹ÝÇØ, 縰Áö¿¡ Ŭ¶óÀ̾ðÆ®°¡ ±× »óŸ¦ °»½ÅÇϱâ À§ÇÑ µ¥ÀÌÅÍ ¹Û¿¡ Æ÷ÇÔµÇÁö ¾Ê°í, ¶ÇÇÑ ¼­¹ö¿¡ ¼Û½ÅÇÏ´Â ÀÀ´äÀÌ ¾ø´Â °æ¿ì¿¡ nullÀÌ µÈ´Ù. Ŭ¶óÀ̾ðÆ®°¡ µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏÁö ¾Ê´Â ÀÀ´äÀ» ¼Û½ÅÇÏ´Â °æ¿ì, ÀÀ´äÀº ±æÀÌ 0 ¹ÙÀÌÆ® ¹è¿­ÀÌ µÈ´Ù
¿¹¿Ü:
SaslException - 縰ÁöÀÇ Ã³¸®½Ã ¶Ç´Â ÀÀ´äÀÇ ÀÛ¼º½Ã¿¡ ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ì

isComplete

boolean isComplete()
ÀÎÁõ ±³È¯ÀÌ ¿Ï·áÇß´ÂÁö ¾î¶°Çß´ÂÁö¸¦ ÆÇÁ¤ÇÕ´Ï´Ù. ÀÌ ¸Þ¼­µå´Â ¾ðÁ¦¶óµµ È£ÃâÇÒ ¼ö ÀÖ½À´Ï´Ù¸¸, ÀϹÝÀûÀ¸·Î È£ÃâÇØ ¿·ÀÌ ¼­¹ö·ÎºÎÅÍ ±³È¯ÀÌ ¿Ï·áÇß´Ù°í ÇÏ´Â ÅëÁö¸¦ ¹ÞÀ» ¶§±îÁö´Â ºÒ·Á°¡ Áö ¾Ê½À´Ï´Ù (ÇÁ·ÎÅäÄÝ °íÀ¯ÀÇ ¹æ¹ý).

¹Ýȯ°ª:
ÀÎÁõ ±³È¯ÀÌ ¿Ï·áÇßÀ» °æ¿ì´Â true, ±×·¸Áö ¾ÊÀº °æ¿ì´Â false

unwrap

byte[] unwrap(byte[] incoming,
              int offset,
              int len)
              throws SaslException 
¼­¹ö·ÎºÎÅÍ ¼ö½ÅÇÑ ¹ÙÀÌÆ® ¹è¿­À» ·¦ ÇØÁ¦ÇÕ´Ï´Ù. ÀÌ ¸Þ¼­µå´Â ÀÎÁõ ±³È¯ÀÌ ¿Ï·áÇß´Ù (isComplete()°¡ true¸¦ µ¹·ÁÁØ) ³ªÁß¿¡ ÀÎÁõ ±³È¯ÀÇ º¸È£ Ç°Áú·Î¼­ ³×°í½Ã¿¡ÀÌÆ® µÈ Á¤ÇÕ¼º ¶Ç´Â ±â¹Ð¼ºÀÌ °®ÃçÁö°í ÀÖ´Â °æ¿ì¿¡°Ô¸¸ È£ÃâÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀº °æ¿ì´Â IllegalStateExceptionÀÌ ¹ß»ý µË´Ï´Ù.

incoming´Â ±æÀ̸¦ ³ªÅ¸³»´Â ÃÖÃÊÀÇ 4°³ÀÇ 8Áßâ Çʵ带 Á¦¿ÜÇÑ, RFC 2222¿¡ Á¤ÀÇµÈ SASL ¹öÆÛÀÇ ³»¿ëÀÔ´Ï´Ù. offset¿Í len´Â 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¸¦ µ¹·ÁÁØ) ³ªÁß¿¡ ÀÎÁõ ±³È¯ÀÇ º¸È£ Ç°Áú·Î¼­ ³×°í½Ã¿¡ÀÌÆ® µÈ Á¤ÇÕ¼º ¶Ç´Â ±â¹Ð¼ºÀÌ °®ÃçÁö°í ÀÖ´Â °æ¿ì¿¡°Ô¸¸ È£ÃâÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀº °æ¿ì´Â IllegalStateExceptionÀÌ ¹ß»ý µË´Ï´Ù.

ÀÌ ¸Þ¼­µåÀÇ °á°ú´Â ±æÀ̸¦ ³ªÅ¸³»´Â ÃÖÃÊÀÇ 4°³ÀÇ 8Áßâ Çʵ带 Á¦¿ÜÇÑ, RFC 2222¿¡ Á¤ÀÇµÈ SASL ¹öÆÛÀÇ ³»¿ëÀ» ±¸¼ºÇÕ´Ï´Ù. offset¿Í len´Â outgoing »ç¿ë ºÎºÐÀ» ÁöÁ¤ÇÕ´Ï´Ù.

ÆĶó¹ÌÅÍ:
outgoing - encode ÇÏ´Â ¹ÙÀÌÆ®¸¦ Æ÷ÇÔÇÑ null ÀÌ¿ÜÀÇ ¹ÙÀÌÆ® ¹è¿­
offset - »ç¿ëÇÏ´Â ¹ÙÀÌÆ®ÀÇ outgoing¿¡ ¼­ÀÇ °³½Ã À§Ä¡
len - »ç¿ëÇÏ´Â outgoing ¹ÙÀÌÆ®¼ö
¹Ýȯ°ª:
encode µÈ ¹ÙÀÌÆ®¸¦ Æ÷ÇÔÇÑ null ÀÌ¿ÜÀÇ ¹ÙÀÌÆ® ¹è¿­
¿¹¿Ü:
SaslException - outgoing¸¦ Á¤»óÀûÀ¸·Î ·¦ ÇÒ ¼ö ¾ø´Â °æ¿ì
IllegalStateException - ÀÎÁõ ±³È¯ÀÌ ¿Ï·áÇÏÁö ¾Ê¾Ò´ø °æ¿ì, ¶Ç´Â ³×°í½Ã¿¡ÀÌÆ® µÈ º¸È£ Ç°Áú¿¡ Á¤ÇÕ¼ºµµ ±â¹Ð¼ºµµ °®ÃçÁöÁö ¾ÊÀº °æ¿ì

getNegotiatedProperty

Object  getNegotiatedProperty(String  propName)
³×°í½Ã¿¡ÀÌÆ® µÈ ÇÁ·ÎÆÛƼ¸¦ ²¨³À´Ï´Ù. ÀÌ ¸Þ¼­µå´Â ÀÎÁõ ±³È¯ÀÌ ¿Ï·áÇß´Ù (isComplete()°¡ true¸¦ µ¹·ÁÁØ) ³ªÁß¿¡ ¸¶¼Å È£ÃâÇÒ ¼ö ÀÖ½À´Ï´Ù . ±×·¸Áö ¾ÊÀº °æ¿ì´Â IllegalStateExceptionÀÌ ¹ß»ý µË´Ï´Ù.

ÆĶó¹ÌÅÍ:
propName - null ÀÌ¿ÜÀÇ ÇÁ·ÎÆÛƼ¸í
¹Ýȯ°ª:
³×°í½Ã¿¡ÀÌÆ® µÈ ÇÁ·ÎÆÛƼÀÇ °ª. nullÀÎ °æ¿ì´Â ÇÁ·ÎÆÛƼ°¡ ³×°í½Ã¿¡ÀÌÆ® µÇÁö ¾Ê¾Ò´ÂÁö, ÀÌ µµ±¸¿¡ Àû¿ëÇÒ ¼ö ¾ø´Ù
¿¹¿Ü:
IllegalStateException - ÀÌ ÀÎÁõ ±³È¯ÀÌ ¿Ï·áÇÏÁö ¾Ê¾Ò´ø °æ¿ì

dispose

void dispose()
             throws SaslException 
SaslClient°¡ »ç¿ëÇÏ°í ÀÖ´Â system resource ¶Ç´Â º¸¾È»ó Áß¿äÇÑ Á¤º¸¸¦ ÆıâÇÕ´Ï´Ù. ÀÌ ¸Þ¼­µå¸¦ È£ÃâÇϸé, SaslClient ÀνºÅϽº°¡ ¹«È¿°¡ µË´Ï´Ù. ÀÌ ¸Þ¼­µå³ª¹«µîÀÔ´Ï´Ù.

¿¹¿Ü:
SaslException - ÀÚ¿øÀ» ÆıâÇÏ°í ÀÖÀ» ¶§ ¹®Á¦°¡ ¹ß»ýÇßÀ» °æ¿ì

JavaTM 2 Platform
Standard Ed. 5.0

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy µµ ÂüÁ¶ÇϽʽÿÀ.