code: public void authenticate(String host, DomainBareJid serviceName, CallbackHandler cbh, EntityBareJid authzid, SSLSession sslSession)
                      throws SmackSaslException, NotConnectedException, InterruptedException {
          this.host = host;
          this.serviceName = serviceName;
          this.authorizationId = authzid;
          this.sslSession = sslSession;
          assert (authorizationId == null || authzidSupported());
          authenticateInternal(cbh);
          authenticate();
      }
docs: Builds and sends the <tt>auth</tt> stanza to the server. The callback handler will handle
  any additional information, such as the authentication ID or realm, if it is needed.
  
  @param host     the hostname where the user account resides.
  @param serviceName the xmpp service location
  @param cbh      the CallbackHandler to obtain user information.
  @param authzid the optional authorization identity.
  @param sslSession the optional SSL/TLS session (if one was established)
  @throws SmackSaslException if a SASL related error occurs.
  @throws NotConnectedException
  @throws InterruptedException