|
Smack | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.jivesoftware.smack.sasl.SASLMechanism
public abstract class SASLMechanism
Base class for SASL mechanisms. Subclasses must implement these methods:
getName()
-- returns the common name of the SASL mechanism.authenticate(String, String, String)
-- Initiate authentication stanza using the
deprecated method.authenticate(String, String, CallbackHandler)
-- Initiate authentication stanza
using the CallbackHandler method.challengeReceived(String)
-- Handle a challenge from the server.
Nested Class Summary | |
---|---|
class |
SASLMechanism.AuthMechanism
Initiating SASL authentication by select a mechanism. |
static class |
SASLMechanism.Challenge
A SASL challenge stanza. |
static class |
SASLMechanism.Failure
A SASL failure stanza. |
class |
SASLMechanism.Response
A SASL response stanza. |
static class |
SASLMechanism.Success
A SASL success stanza. |
Field Summary | |
---|---|
protected String |
authenticationId
|
protected String |
hostname
|
protected String |
password
|
protected javax.security.sasl.SaslClient |
sc
|
Constructor Summary | |
---|---|
SASLMechanism(SASLAuthentication saslAuthentication)
|
Method Summary | |
---|---|
protected void |
authenticate()
|
void |
authenticate(String username,
String host,
javax.security.auth.callback.CallbackHandler cbh)
Builds and sends the auth stanza to the server. |
void |
authenticate(String username,
String host,
String password)
Deprecated. Please use authenticate(String, String, String, String) instead. |
void |
authenticate(String username,
String host,
String serviceName,
String password)
Builds and sends the auth stanza to the server. |
void |
challengeReceived(String challenge)
The server is challenging the SASL mechanism for the stanza he just sent. |
protected abstract String |
getName()
Returns the common name of the SASL mechanism. |
protected SASLAuthentication |
getSASLAuthentication()
|
void |
handle(javax.security.auth.callback.Callback[] callbacks)
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected javax.security.sasl.SaslClient sc
protected String authenticationId
protected String password
protected String hostname
Constructor Detail |
---|
public SASLMechanism(SASLAuthentication saslAuthentication)
Method Detail |
---|
public void authenticate(String username, String host, String serviceName, String password) throws IOException, XMPPException
authenticate(String, String, CallbackHandler)
whenever possible.
Explanation of auth stanza:
The client authentication stanza needs to include the digest-uri of the form: xmpp/serverName
From RFC-2831:
digest-uri = "digest-uri" "=" digest-uri-value
digest-uri-value = serv-type "/" host [ "/" serv-name ]
digest-uri:
Indicates the principal name of the service with which the client
wishes to connect, formed from the serv-type, host, and serv-name.
For example, the FTP service
on "ftp.example.com" would have a "digest-uri" value of "ftp/ftp.example.com"; the SMTP
server from the example above would have a "digest-uri" value of
"smtp/mail3.example.com/example.com".
host:
The DNS host name or IP address for the service requested. The DNS host name
must be the fully-qualified canonical name of the host. The DNS host name is the
preferred form; see notes on server processing of the digest-uri.
serv-name:
Indicates the name of the service if it is replicated. The service is
considered to be replicated if the client's service-location process involves resolution
using standard DNS lookup operations, and if these operations involve DNS records (such
as SRV, or MX) which resolve one DNS name into a set of other DNS names. In this case,
the initial name used by the client is the "serv-name", and the final name is the "host"
component. For example, the incoming mail service for "example.com" may be replicated
through the use of MX records stored in the DNS, one of which points at an SMTP server
called "mail3.example.com"; it's "serv-name" would be "example.com", it's "host" would be
"mail3.example.com". If the service is not replicated, or the serv-name is identical to
the host, then the serv-name component MUST be omitted
digest-uri verification is needed for ejabberd 2.0.3 and higher
username
- the username of the user being authenticated.host
- the hostname where the user account resides.serviceName
- the xmpp service location - used by the SASL client in digest-uri creation
serviceName format is: host [ "/" serv-name ] as per RFC-2831password
- the password for this account.
IOException
- If a network error occurs while authenticating.
XMPPException
- If a protocol error occurs or the user is not authenticated.public void authenticate(String username, String host, String password) throws IOException, XMPPException
authenticate(String, String, String, String)
instead.
authenticate(String, String, String, String)
, but with the hostname used as the serviceName.
Kept for backward compatibility only.
username
- the username of the user being authenticated.host
- the hostname where the user account resides.password
- the password for this account.
IOException
- If a network error occurs while authenticating.
XMPPException
- If a protocol error occurs or the user is not authenticated.public void authenticate(String username, String host, javax.security.auth.callback.CallbackHandler cbh) throws IOException, XMPPException
username
- the username of the user being authenticated.host
- the hostname where the user account resides.cbh
- the CallbackHandler to obtain user information.
IOException
- If a network error occures while authenticating.
XMPPException
- If a protocol error occurs or the user is not authenticated.protected void authenticate() throws IOException, XMPPException
IOException
XMPPException
public void challengeReceived(String challenge) throws IOException
challenge
- a base64 encoded string representing the challenge.
IOException
- if an exception sending the response occurs.protected abstract String getName()
protected SASLAuthentication getSASLAuthentication()
public void handle(javax.security.auth.callback.Callback[] callbacks) throws IOException, javax.security.auth.callback.UnsupportedCallbackException
handle
in interface javax.security.auth.callback.CallbackHandler
IOException
javax.security.auth.callback.UnsupportedCallbackException
|
Smack | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |