KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > ibm > webdav > protocol > http > WebDAVAuthenticator


1 package com.ibm.webdav.protocol.http;
2
3 /*
4  * (C) Copyright IBM Corp. 2000 All rights reserved.
5  *
6  * The program is provided "AS IS" without any warranty express or
7  * implied, including the warranty of non-infringement and the implied
8  * warranties of merchantibility and fitness for a particular purpose.
9  * IBM will not be liable for any damages suffered by you as a result
10  * of using the Program. In no event will IBM be liable for any
11  * special, indirect or consequential damages or lost profits even if
12  * IBM has been advised of the possibility of their occurrence. IBM
13  * will not be liable for any third party claims against you.
14  */

15 import java.net.*;
16
17 import sun.misc.*;
18 import sun.net.www.protocol.http.*;
19
20 /**
21  * An interface for all objects that implement HTTP authentication.
22  * See the HTTP spec for details on how this works in general.
23  * A single class or object can implement an arbitrary number of
24  * authentication schemes.
25  *
26  * @author Jim Amsden
27  */

28 public class WebDAVAuthenticator implements HttpAuthenticator {
29
30    static BASE64Encoder base64encoder = new BASE64Encoder();
31 /**
32 * Returns the String that should be included in the HTTP
33 * <B>Authorization</B> field. Return null if no info was
34 * supplied or could be found.
35 * <P>
36 * Example:
37 * --> GET http://www.authorization-required.com/ HTTP/1.0
38 * <-- HTTP/1.0 403 Unauthorized
39 * <-- WWW-Authenticate: Basic realm="WallyWorld"
40 * call schemeSupported("Basic"); (return true)
41 * call authString(u, "Basic", "WallyWorld", null);
42 * return "QWadhgWERghghWERfdfQ=="
43 * --> GET http://www.authorization-required.com/ HTTP/1.0
44 * --> Authorization: Basic QWadhgWERghghWERfdfQ==
45 * <-- HTTP/1.0 200 OK
46 * @param u the resource URL
47 * @param scheme the authentication scheme, Basic, or Digest
48 * @param realm the security realm to authenticate in
49 * @return a valid authorization header using the scheme in the realm
50 */

51 public String JavaDoc authString(URL u, String JavaDoc scheme, String JavaDoc realm) {
52     String JavaDoc authString = null;
53
54     // put up a dialog requesting the userid and password for this scheme
55
// and realm
56
/*
57     JTextField userid = new JTextField();
58     JPasswordField password = new JPasswordField();
59     Object[] fields = {"Enter userid and password", userid, password};
60     JOptionPane uidPane = new JOptionPane(fields, JOptionPane.QUESTION_MESSAGE, JOptionPane.OK_CANCEL_OPTION);
61     JDialog dialog = uidPane.createDialog(null, scheme + " " + realm);
62     dialog.show();
63     Integer result = (Integer) uidPane.getValue();
64     if (result.intValue() == 0) {
65         authString = base64encoder.encode((userid.getText() + ":" + password.getPassword()).getBytes());
66     }
67     */

68     // This was a good idea, but it is probably better for authoring
69
// applications if the application handles authentication itself
70
return authString;
71 }
72 /**
73 * Indicate whether the specified authentication scheme is
74 * supported. In accordance with HTTP specifications, the
75 * scheme name should be checked in a case-insensitive fashion.
76 * @param scheme the authentication scheme to check for
77 * @return true if the scheme is supported, false otherwise
78 */

79 public boolean schemeSupported(String JavaDoc scheme) {
80     return scheme.equalsIgnoreCase("basic");
81 }
82 }
83
Popular Tags