Search in sources :

Example 1 with Authentication

use of org.jivesoftware.smack.packet.Authentication in project ecf by eclipse.

the class PacketParserUtils method parseAuthentication.

private static Authentication parseAuthentication(XmlPullParser parser) throws Exception {
    Authentication authentication = new Authentication();
    boolean done = false;
    while (!done) {
        int eventType = parser.next();
        if (eventType == XmlPullParser.START_TAG) {
            if (parser.getName().equals("username")) {
                authentication.setUsername(parser.nextText());
            } else if (parser.getName().equals("password")) {
                authentication.setPassword(parser.nextText());
            } else if (parser.getName().equals("digest")) {
                authentication.setDigest(parser.nextText());
            } else if (parser.getName().equals("resource")) {
                authentication.setResource(parser.nextText());
            }
        } else if (eventType == XmlPullParser.END_TAG) {
            if (parser.getName().equals("query")) {
                done = true;
            }
        }
    }
    return authentication;
}
Also used : Authentication(org.jivesoftware.smack.packet.Authentication)

Example 2 with Authentication

use of org.jivesoftware.smack.packet.Authentication in project ecf by eclipse.

the class NonSASLAuthentication method authenticate.

public String authenticate(String username, String password, String resource) throws XMPPException {
    // If we send an authentication packet in "get" mode with just the username,
    // the server will return the list of authentication protocols it supports.
    Authentication discoveryAuth = new Authentication();
    discoveryAuth.setType(IQ.Type.GET);
    discoveryAuth.setUsername(username);
    PacketCollector collector = connection.createPacketCollector(new PacketIDFilter(discoveryAuth.getPacketID()));
    // Send the packet
    connection.sendPacket(discoveryAuth);
    // Wait up to a certain number of seconds for a response from the server.
    IQ response = (IQ) collector.nextResult(SmackConfiguration.getPacketReplyTimeout());
    if (response == null) {
        throw new XMPPException("No response from the server.");
    } else // If the server replied with an error, throw an exception.
    if (response.getType() == IQ.Type.ERROR) {
        throw new XMPPException(response.getError());
    }
    // Otherwise, no error so continue processing.
    Authentication authTypes = (Authentication) response;
    collector.cancel();
    // Now, create the authentication packet we'll send to the server.
    Authentication auth = new Authentication();
    auth.setUsername(username);
    // Figure out if we should use digest or plain text authentication.
    if (authTypes.getDigest() != null) {
        auth.setDigest(connection.getConnectionID(), password);
    } else if (authTypes.getPassword() != null) {
        auth.setPassword(password);
    } else {
        throw new XMPPException("Server does not support compatible authentication mechanism.");
    }
    auth.setResource(resource);
    collector = connection.createPacketCollector(new PacketIDFilter(auth.getPacketID()));
    // Send the packet.
    connection.sendPacket(auth);
    // Wait up to a certain number of seconds for a response from the server.
    response = (IQ) collector.nextResult(SmackConfiguration.getPacketReplyTimeout());
    if (response == null) {
        throw new XMPPException("Authentication failed.");
    } else if (response.getType() == IQ.Type.ERROR) {
        throw new XMPPException(response.getError());
    }
    // We're done with the collector, so explicitly cancel it.
    collector.cancel();
    return response.getTo();
}
Also used : Authentication(org.jivesoftware.smack.packet.Authentication) IQ(org.jivesoftware.smack.packet.IQ) PacketIDFilter(org.jivesoftware.smack.filter.PacketIDFilter)

Example 3 with Authentication

use of org.jivesoftware.smack.packet.Authentication in project ecf by eclipse.

the class NonSASLAuthentication method authenticateAnonymously.

public String authenticateAnonymously() throws XMPPException {
    // Create the authentication packet we'll send to the server.
    Authentication auth = new Authentication();
    PacketCollector collector = connection.createPacketCollector(new PacketIDFilter(auth.getPacketID()));
    // Send the packet.
    connection.sendPacket(auth);
    // Wait up to a certain number of seconds for a response from the server.
    IQ response = (IQ) collector.nextResult(SmackConfiguration.getPacketReplyTimeout());
    if (response == null) {
        throw new XMPPException("Anonymous login failed.");
    } else if (response.getType() == IQ.Type.ERROR) {
        throw new XMPPException(response.getError());
    }
    // We're done with the collector, so explicitly cancel it.
    collector.cancel();
    if (response.getTo() != null) {
        return response.getTo();
    } else {
        return connection.getServiceName() + "/" + ((Authentication) response).getResource();
    }
}
Also used : Authentication(org.jivesoftware.smack.packet.Authentication) IQ(org.jivesoftware.smack.packet.IQ) PacketIDFilter(org.jivesoftware.smack.filter.PacketIDFilter)

Aggregations

Authentication (org.jivesoftware.smack.packet.Authentication)3 PacketIDFilter (org.jivesoftware.smack.filter.PacketIDFilter)2 IQ (org.jivesoftware.smack.packet.IQ)2