1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.backsource.axis;
21 import org.apache.axis.AxisFault;
22 import org.apache.axis.MessageContext;
23 import org.apache.axis.Handler;
24 import org.apache.axis.handlers.BasicHandler;
25 import org.apache.axis.components.logger.LogFactory;
26 import org.apache.axis.utils.Messages;
27 import org.apache.commons.logging.Log;
28 /***
29 * A truly simple handler that combines Authentication and Authorization into one handle that contains one user/password pair.
30 *
31 * <p>Use this to set up services that are really only to be used by one sender.</p>
32 <pre> <handler type="java:org.backsource.axis.UserPasswordAutenticationHandler">
33 <parameter name="allowedUser" value="VV"/>
34 <parameter name="allowedPassword" value="VV1"/>
35 </handler>
36 </pre>
37 <p>The params may also be specifyed at service level, and will then owerride
38 the ones set at handler level.</p>
39 <handler type="java:org.backsource.axis.UserPasswordAutenticationHandler">
40 <parameter name="allowedUser" value="VV"/>
41 <parameter name="allowedPassword" value="VV1"/>
42 </handler>
43 *
44 * @author <a href="mailto:pra@tim.se">Peter Antman</a>
45 * @version $Revision: 1.1.1.1 $
46 */
47
48 public class UserPasswordAutenticationHandler extends BasicHandler{
49 protected static Log log =
50 LogFactory.getLog(UserPasswordAutenticationHandler.class.getName());
51
52
53
54 public UserPasswordAutenticationHandler (){
55
56 }
57
58
59
60 public void invoke(MessageContext msgContext) throws AxisFault {
61 Handler serviceHandler = msgContext.getService();
62 String allowedUser = (String)serviceHandler.getOption("allowedUser");
63 if ( allowedUser == null) {
64 allowedUser = (String)getOption("allowedUser");
65 }
66 String allowedPassword = (String)serviceHandler.getOption("allowedPassword");
67 if ( allowedPassword== null) {
68 allowedPassword = (String)getOption("allowedPassword");
69 }
70 if ( allowedUser == null || allowedPassword == null) {
71 log.error("No user/password setup user="+allowedUser + " password="+allowedPassword);
72 throw new AxisFault("Server.NoUser",
73 Messages.getMessage("needUser00"), null, null);
74 }
75
76 String userID = msgContext.getUsername();
77 if (log.isDebugEnabled()) {
78 log.debug( Messages.getMessage("user00", userID) );
79 }
80
81 if ( userID == null || userID.equals(""))
82 throw new AxisFault( "Server.Unauthenticated",
83 Messages.getMessage("cantAuth00", userID),
84 null, null );
85 String passwd = msgContext.getPassword();
86 if (log.isDebugEnabled()) {
87 log.debug( Messages.getMessage("password00", passwd) );
88 }
89 if ( passwd == null || passwd.equals(""))
90 throw new AxisFault( "Server.Unauthenticated",
91 Messages.getMessage("cantAuth00", userID),
92 null, null );
93 if ( allowedUser.equals( userID) && allowedPassword.equals(passwd) ) {
94 return;
95 } else {
96 throw new AxisFault( "Server.Unauthenticated",
97 Messages.getMessage("cantAuth01", userID),
98 null, null );
99 }
100
101 }
102 }