6£®Ê¹ÓÃSASL 6£®1 ¸ÅÊö
XMPP°üº¬Ò»¸öÈÏÖ¤Á÷µÄ·½·¨£¬´Ë·½·¨ÒÀ¿¿Ò»¸ö¼òµ¥ÈÏÖ¤Ó밲ȫ²ã£¨SASL£©ÐÒé[SASL]µÄXMPP-specific profile¡£SASLÌṩһ¸öÒ»°ã»¯·½·¨£¬ÓÃÓÚ¸ø»ùÓÚÁ¬½ÓµÄÐÒé¼ÓÈÏÖ¤Ö§³Ö£¬²¢ÇÒ£¬XMPPʹÓÃÒ»¸öÒ»°ã»¯XMLÃüÃû¿Õ¼äprofile£¬ÓÃÓÚ SASL£¬×ñ´Ó[SASL]µÄprofilingÐèÇó¡£
ÒÔϹæÔòÓ¦Óãº
1£© Èç¹ûÁ½¸ö·þÎñÆ÷¼ä·¢ÉúSASLÐÉÌ£¬Ö±µ½ÓÉ·þÎñÆ÷Ðû³ÆµÄÓòÃûϵͳ£¨DNS£©Ö÷»úÃû±»½âÎöÁË£¨²Î¿¼·þÎñÆ÷µ½·þÎñÆ÷ͨÐÅ£¨14.4£©£©£¬Í¨ÐŲſɴ¦Àí¡£
2£© Èç¹ûʵʼʵÌåÄܹ»½øÐÐSASLÐÉÌ£¬£¬Ëü±ØÐëÔÚ³õʼÁ÷Í·Öаüº¬ÖµÖÁÉÙΪ¡°1.0¡±µÄ°æ±¾ÊôÐÔ¡£
3£© Èç¹û½ÓÊÕʵÌåÄܹ»½øÐÐSASLÐÉÌ£¬Ëü±ØÐëÔÚÒ»¸ö
5£© Èκΰüº¬ÔÚXMLÔªËØÖеÄXML×Ö·ûÊý¾Ý£¬ÔÚSASLÐÉÌÆÚ¼äʹÓ㬱ØÐëʹÓÃbase64±àÂ룬±àÂëÔÚRFC3548µÚÈý½ÚÓж¨Òå¡£
6£© Èç¹ûËùÌṩµÄÒ»¸ö¡°¼òµ¥Óû§Ãû¡±Äܹ»±»Ñ¡¶¨SASL»úÖÆ£¨Àý£ºÓÉDIGEST-MD5ÓëCRAM-MD5»úÖÆËùÖ§³Ö£¬µ«²»¿¿EXTERNALÓë GSSAPI»úÖÆËùÖ§³Ö£©ËùÖ§³Ö£¬ÔÚÈÏÖ¤ÆÚ¼ä£¬³õʼʵÌåÓ¦µ±×÷Ϊ¼òµ¥Óû§ÃûÌṩËüµÄ·¢ËÍÓò£¨IPµØÖ·»ò°üº¬ÔÚÓò±êʶ·ûÖеÄÈ«ÈÏÖ¤ÓòÃû£©ÔÚ·þÎñÆ÷¶Ô·þÎñÆ÷µÄ ͨÐÅÇé¿öÏ£¬»òÊÇËüµÄÒÑ×¢²áÕÊ»§Ãû£¨°üº¬ÔÚXMPP½áµã±êʶ·ûÖеÄÓû§»ò½áµãÃû£©ÔÚ¿Í»§µ½·þÎñÆ÷µÄͨÐÅÇé¿öÏ¡£
7£© Èç¹û³õʼʵÌåÏ£Íû´ú±íÆäËüʵÌåÓëÖ§³ÖÊÚȨÉí·Ý´«ÊäµÄ±»Ñ¡SASL»úÖÆÀ´Ðж¯£¬³õʼʵÌåÔÚSASLÐÉÌÆÚ¼ä±ØÐëÌṩһ¸öÊÚȨÉí·Ý¡£Èç¹û³õʼʵÌ岻ϣÍû´ú±íÁí Ò»¸öʵÌåÐж¯£¬Ëü²»×¼Ìṩһ¸öÊÚȨÉí·Ý¡£ÕýÈç[SASL]ÖÐÖ¸¶¨µÄ£¬³õʼʵÌå²»×¼Ìṩһ¸öÊÚȨÉí·Ý£¬³ý·ÇÒ»¸öÊÚȨÉí·Ý²»Í¬ÓÚȱʡÊÚȨÉí·Ý£¬´ËȱʡÊÚȨÉí·Ý ÅÉÉúÓÚÃèÊöÔÚ[SASL]ÖеÄÈÏÖ¤Éí·Ý¡£Èç¹ûÌṩÁË£¬ÊÚȨÉí·ÝÖµ¶Ô·þÎñÆ÷À´Ëµ±ØÐëÊÇ
¶Ô¿Í»§ ¶ËÀ´Ëµ£¬±ØÐëÊÇ
8£© ¿¿Éæ¼°µ½°²È«²ãÐÉ̵ÄSASLÐÉ̵ijɹ¦£¬½ÓÊÕʵÌ屨ÐëÅׯúÀ´×Ô±¾ÉíûÓлñµÃSASLÐÉ̵ijõʼʵÌåµÄÈκÎ֪ʶ¡£
9£© ¿¿Éæ¼°µ½°²È«²ãÐÉ̵ÄSASLÐÉ̵ijɹ¦£¬³õʼʵÌ屨ÐëÅׯúÀ´×Ô±¾ÉíûÓлñµÃSASLÐÉ̵ĽÓÊÕʵÌåµÄÈκÎ֪ʶ¡£
10£© ²Î¿¼±ØÐë±»Ö§³ÖµÄÏà¹Ø»úÖÆµÄÇ¿ÖÆÊµÊ©¼¼Êõ£¨14.7£©¡£
6£®2ÐðÊö
µ±³õʼʵÌåʹÓÃSASLÈÏÖ¤½ÓÊÕʵÌåʱ£¬²½ÖèÈçÏ£º
1£© ³õʼʵÌåÇëÇóSASLÈÏÖ¤£¬Í¨¹ýÔÚ¿ª·ÅXMLÁ÷Í·Öаüº¬°æ±¾ÊôÐÔ£¬²¢½«Æä·¢Ë͸ø½ÓÊÕʵÌ壬ÊôÐÔÖµÉèΪ¡°1.0¡±¡£
2£© ·¢ËÍÒ»¸öXMLÁ÷Í·×÷Ϊ»ØÓ¦ºó£¬½ÓÊÕʵÌå¹ã¸æÒ»¸ö¿ÉÀûÓõÄSASLÈÏÖ¤»úÖÆÁÐ±í£»ÁбíÖÐÿһÏî¶¼ÊÇÒ»¸ö
3£© ³õʼʵÌåÑ¡ÔñÒ»¸ö»úÖÆ£¬¿¿·¢ËÍÒ»¸öÒѱ»'urn:ietf:params:xml:ns:xmpp-sasl'ÃüÃû¿Õ¼äÈ϶¨ÎªºÏ¸ñ µÄ
4£© Èç¹ûÐèÒª£¬½ÓÊÕʵÌå¿¿·¢ËÍÒ»¸ö
5£© ³õʼʵÌåÏìÓ¦´ËÌôÕ½£¬¿¿·¢ËÍÓÉ'urn:ietf:params:xml:ns:xmpp-sasl'ÃüÃû¿Õ¼äÏÞ¶¨µÄ
6£© Èç¹ûÐèÒª£¬½ÓÊÕʵÌå·¢Ë͸ü¶àµÄÌôÕ½£¬³õʼʵÌå·¢Ë͸ü¶àµÄÏìÓ¦¡£
Challenge/responseÐòÁжԼÌÐø£¬Ö±µ½ÒÔÏÂÈýÖÖÊÂÇéÖ®Ò»·¢Éú£º
1£© ³õʼʵÌåÖÕÖ¹ÎÕÊÖ£¬¿¿·¢ËÍÒ»¸öÓÉ'urn:ietf:params:xml:ns:xmpp-sasl'ÃüÃû¿Õ¼äÏÞ¶¨µÄ
2£© ½ÓÊÕʵÌ屨¸æÎÕÊÖʧ°Ü£¬¿¿·¢ËÍÒ»¸öÓÉ'urn:ietf:params:xml:ns:xmpp-sasl'ÃüÃû¿Õ¼äÏÞ¶¨ µÄ
3£© ½ÓÊÕʵÌ屨¸æÎÕÊֳɹ¦£¬¿¿·¢ËÍÒ»¸öÓÉ'urn:ietf:params:xml:ns:xmpp-sasl'ÃüÃû¿Õ¼äÏÞ¶¨ µÄ
6£®3 SASL¶¨Òå
[SASL]µÄprofilingÐèÇóÒªÇóÐÒ鶨ÒåÌṩÒÔÏÂÐÅÏ¢£º ·þÎñÃû£º¡°xmpp¡±
³õʼÐòÁУº³õʼʵÌåÌṩһ¸ö¿ª·ÅXMLÁ÷Í·ºó£¬²¢ÇÒ½ÓÊÕʵÌå°´´ËÏìÓ¦ºó£¬½ÓÊÕʵÌåÌṩһ¸ö¿É½ÓÊÕµÄÈÏÖ¤·½·¨ÁÐ±í¡£³õʼʵÌå´ÓÁбíÖÐÑ¡ÔñÒ»¸ö·½·¨²¢×÷Ϊ ¡®machanism¡¯ÊôÐÔÖµ·¢Ë͸ø½ÓÊÕʵÌ壬´ËÊôÐÔ±»
ʼʵÌåµ½½ÓÊÕʵÌåµÄ
°²È«²ãÐÉÌ£º°²È«²ãÔÚΪ½ÓÊÕʵÌå·¢ËÍ
ʹÓÃÊÚȨÉí·Ý£ºÊÚȨÉí·Ý¿ÉÒÔ±»XMPPÓÃÓÚָʾ¿Í»§¶Ë·Çȱʡ
6£®4 SASL´íÎó
ÒÔÏÂÊÇSASLÏà¹Ø´íÎóÌõ¼þµÄ¶¨Ò壺£¨ÂÔ£© 1£©
2£©
6£®5 ¿Í»§¶Ëµ½·þÎñÆ÷µÄÀý×Ó
ÒÔÏÂÀý×ÓÏÔʾÁËʹÓÃSASLÊÚȨµÄ¿Í»§¶ËÓë·þÎñÆ÷¶ËµÄÊý¾ÝÁ÷£¬Õý³£Çé¿öÏ£¬ÊÇÔÚTLSÐÉÌ£¨×¢£ºÏÔʾÔÚÏÂÃæµÄÌæ»»²½ÖèÓÃÓÚÏÔʾ´íÎóÇé¿öµÄÐÒ飻ËûÃDz¢²»Ï꾡Ҳ²»ÊDZØÒªµÄÓɱ¾ÀýÖÐÊý¾Ý·¢ËͶø´¥·¢¡££©³É¹¦Ö®ºó¡£
²½1£º¿Í»§¶Ë³õʼÁ÷¸ø·þÎñÆ÷£º xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' to='example.com' version='1.0'>