SaslModule & Sasl2Module
SaslModule and Sasl2Module provides mechanism to authenticate user in XMPP server.
Our current implementation supports a set of mechanisms to do that:
SCRAM-SHA-1&SCRAM-SHA-1-PLUSSCRAM-SHA-256&SCRAM-SHA-256-PLUSSCRAM-SHA-512&SCRAM-SHA-512-PLUSPLAIN
All SCRAM mechanisms with PLUS allow to bind authentication process with TLS channel. It makes authentication
process more secure and protect against man-in-the-middle attack.
SCRAM mechanisms in Halcyon supports three types on channel binding: tls-unique, tls-exporter and tls-server-end-point.
Unfortunately, because of limitation of Java TLS API implementation, by default only tls-server-end-point is
supported.
To enable other channel binding types, you have to use BouncyCastle based TLS processor. It is provided by separate module, so you need to import it to your project
implementation("tigase.halcyon:halcyon-bouncycastle:$HalcyonVersion")
and configure socket connector:
import tigase.halcyon.core.builder.createHalcyon
import tigase.halcyon.core.builder.socketConnector
import tigase.halcyon.core.connector.socket.BouncyCastleTLSProcessor
val halcyon = createHalcyon {
socketConnector {
tlsProcessorFactory = BouncyCastleTLSProcessor
}
}
SaslModule vs Sasl2Module
Sasl2Module does exactly the same what SaslModule. The only difference is that Sasl2Module is used with
Bind 2 mechanism.
Events
SASLEvent has three subtypes of events:
SASLStartedfired when authentication process begins, it also provides used mechanism;SASLSuccessfired when authentication process is finished with success;SASLErrorfired on authentication error, it provides sasl error type and optional human readable description.