http://docs.oracle.com/javase/1.5.0/docs/guide/security/sasl/sasl-refguide.html
SASL(简单授权和安全层)是一个互联网标准,它制定了一个鉴权协议,且在client和server之间建立连接。SASL定义了鉴权数据如何交换,但是并没有制定数据的内容。它是一个鉴权机制框架。
SASL通过LDAP v3和IMAP v4协议来确保鉴权是可插拔的。而不是硬编码一个鉴权方法到协议。
SASL是一种challange-response协议,server发布challenge到client,而client基于challange发送response。这种交换直到server被满足且b不再发布challage。challenge和response是任意长度的二进制标记,封装协议诸如LDAP、IMAP指定了这些标记如何被编码和交换的。例如LDAP指定了SASL标记被封装在LDAP request和response内。
Java SASL根据这种应答和使用方式已经模板化了,SaslClient和SaslServer接口,分别代表了client-side和server-side的机制。应用程序通过代表challenge和response的字节数组,使用这种机制交互。server-side机制:不断发布challenge,处理response直到被满足,而client-side机制:不断评估challenge,且发布response直到server满足。