|
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);
µµ±¸¿¡ Ãʱâ ÀÀ´äÀÌ Æ÷ÇԵǾî ÀÖ´Â °æ¿ì, ¶óÀ̺귯¸®´Â ºñ¾îÀִ ç¸°Áö·Î evaluateChallenge()¸¦ È£ÃâÇØ, Ãʱâ ÀÀ´äÀ» ÃëµæÇÕ´Ï´Ù. IMAP4 µîÀÇ ÇÁ·ÎÅäÄÝÀº ¼¹ö¿¡ÀÇ ÃÖÃÊÀÇ ÀÎÁõ Ä¿¸àµå¸¦ °¡Áö´Â Ãʱâ ÀÀ´äÀÌ Æ÷ÇÔµÇÁö ¾Ê±â ¶§¹®¿¡ ÃÖÃÊ·Î hasInitialResponse() ¶Ç´Â evaluateChallenge()¸¦ È£ÃâÇÏÁö ¸»°í ÀÎÁõÀ» °³½ÃÇÕ´Ï´Ù. ¼¹ö°¡ ÀÎÁõ Ä¿¸àµå¿¡ ÀÀ´äÇϸé, Ãʱâ 縰Áö°¡ ¼Û½ÅµË´Ï´Ù. Ŭ¶óÀÌ¾ðÆ®°¡ ÃÖÃÊ·Î µ¥ÀÌÅ͸¦ ¼Û½ÅÇÏ´Â SASL µµ±¸¿¡ ¼´Â ¼¹ö´Â µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏÁö ¾Ê´Â 縰Áö¸¦ ¹ßÇàÇØ µÎÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. °Å±â¿¡ µû¶ó, ºñ¾îÀִ ç¸°Áö¿¡ ÇÑ 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 2 Platform Standard Ed. 5.0 |
|||||||||
ÀÌÀü Ŭ·¡½º ´ÙÀ½ Ŭ·¡½º | ÇÁ·¹ÀÓÀ¸·Î ÇÁ·¹ÀÓ ¾øÀÌ | |||||||||
°³¿ä: NESTED | Çʵå | »ý¼ºÀÚ | ¸Þ¼µå | »ó¼¼: Çʵå | »ý¼ºÀÚ | ¸Þ¼µå |
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy µµ ÂüÁ¶ÇϽʽÿÀ.