mirror of
https://codeberg.org/Mercury-IM/Smack
synced 2025-09-10 18:59:41 +02:00
Big change for authentication, which now supports more SASL mechanisms and
callbacks. This should address issues SMACK-210 and SMACK-142, as well as set the stage for SMACK-234. git-svn-id: http://svn.igniterealtime.org/svn/repos/smack/trunk@9498 b35dd754-fafc-0310-a699-88a17e54d16e
This commit is contained in:
parent
85a92b600b
commit
13b8d313ba
14 changed files with 801 additions and 189 deletions
|
@ -24,6 +24,11 @@ import org.jivesoftware.smack.filter.PacketIDFilter;
|
|||
import org.jivesoftware.smack.packet.Authentication;
|
||||
import org.jivesoftware.smack.packet.IQ;
|
||||
|
||||
import javax.security.auth.callback.CallbackHandler;
|
||||
import javax.security.auth.callback.PasswordCallback;
|
||||
import javax.security.auth.callback.Callback;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* Implementation of JEP-0078: Non-SASL Authentication. Follow the following
|
||||
* <a href=http://www.jabber.org/jeps/jep-0078.html>link</a> to obtain more
|
||||
|
@ -40,6 +45,17 @@ class NonSASLAuthentication implements UserAuthentication {
|
|||
this.connection = connection;
|
||||
}
|
||||
|
||||
public String authenticate(String username, String resource, CallbackHandler cbh) throws XMPPException {
|
||||
//Use the callback handler to determine the password, and continue on.
|
||||
PasswordCallback pcb = new PasswordCallback("Password: ",false);
|
||||
try {
|
||||
cbh.handle(new Callback[]{pcb});
|
||||
return authenticate(username, String.valueOf(pcb.getPassword()),resource);
|
||||
} catch (Exception e) {
|
||||
throw new XMPPException("Unable to determine password.",e);
|
||||
}
|
||||
}
|
||||
|
||||
public String authenticate(String username, String password, String resource) throws
|
||||
XMPPException {
|
||||
// If we send an authentication packet in "get" mode with just the username,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue