blob: 38b30ca170beeb92b83064e201a01ab12471f603 [file] [log] [blame]
Shuyi Chend7955ce2013-05-22 14:51:55 -07001/**
2 * $RCSfile$
3 * $Revision$
4 * $Date$
5 *
6 * Copyright 2003-2007 Jive Software.
7 *
8 * All rights reserved. Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
11 *
12 * http://www.apache.org/licenses/LICENSE-2.0
13 *
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 */
20
21package org.jivesoftware.smack;
22
23import org.apache.harmony.javax.security.auth.callback.CallbackHandler;
24
25/**
26 * There are two ways to authenticate a user with a server. Using SASL or Non-SASL
27 * authentication. This interface makes {@link SASLAuthentication} and
28 * {@link NonSASLAuthentication} polyphormic.
29 *
30 * @author Gaston Dombiak
31 * @author Jay Kline
32 */
33interface UserAuthentication {
34
35 /**
36 * Authenticates the user with the server. This method will return the full JID provided by
37 * the server. The server may assign a full JID with a username and resource different than
38 * requested by this method.
39 *
40 * Note that using callbacks is the prefered method of authenticating users since it allows
41 * more flexability in the mechanisms used.
42 *
43 * @param username the requested username (authorization ID) for authenticating to the server
44 * @param resource the requested resource.
45 * @param cbh the CallbackHandler used to obtain authentication ID, password, or other
46 * information
47 * @return the full JID provided by the server while binding a resource for the connection.
48 * @throws XMPPException if an error occurs while authenticating.
49 */
50 String authenticate(String username, String resource, CallbackHandler cbh) throws
51 XMPPException;
52
53 /**
54 * Authenticates the user with the server. This method will return the full JID provided by
55 * the server. The server may assign a full JID with a username and resource different than
56 * the requested by this method.
57 *
58 * It is recommended that @{link #authenticate(String, String, CallbackHandler)} be used instead
59 * since it provides greater flexability in authenticaiton and authorization.
60 *
61 * @param username the username that is authenticating with the server.
62 * @param password the password to send to the server.
63 * @param resource the desired resource.
64 * @return the full JID provided by the server while binding a resource for the connection.
65 * @throws XMPPException if an error occures while authenticating.
66 */
67 String authenticate(String username, String password, String resource) throws
68 XMPPException;
69
70 /**
71 * Performs an anonymous authentication with the server. The server will created a new full JID
72 * for this connection. An exception will be thrown if the server does not support anonymous
73 * authentication.
74 *
75 * @return the full JID provided by the server while binding a resource for the connection.
76 * @throws XMPPException if an error occures while authenticating.
77 */
78 String authenticateAnonymously() throws XMPPException;
79}