1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.cms.security.auth.login;
35
36 import info.magnolia.cms.security.SecuritySupportBase;
37 import info.magnolia.cms.security.auth.callback.CredentialsCallbackHandler;
38 import info.magnolia.cms.security.auth.callback.PlainTextCallbackHandler;
39
40 import javax.servlet.http.HttpServletRequest;
41 import javax.servlet.http.HttpServletResponse;
42
43 import org.apache.commons.lang3.StringUtils;
44 import org.slf4j.Logger;
45 import org.slf4j.LoggerFactory;
46
47
48
49
50 public class FormLogin extends LoginHandlerBase implements LoginHandler {
51
52 private static final Logger log = LoggerFactory.getLogger(FormLogin.class);
53
54 public static final String PARAMETER_USER_ID = "mgnlUserId";
55
56 public static final String PARAMETER_PSWD = "mgnlUserPSWD";
57
58 public static final String PARAMETER_REALM = "mgnlRealm";
59
60 public static final String PARAMETER_RETURN_TO = "mgnlReturnTo";
61
62
63
64
65
66 private String jaasChain = SecuritySupportBase.DEFAULT_JAAS_LOGIN_CHAIN;
67
68 @Override
69 public LoginResult handle(HttpServletRequest request, HttpServletResponse response) {
70 String userid = request.getParameter(PARAMETER_USER_ID);
71 log.debug("handle login for {}", userid);
72 if (StringUtils.isNotEmpty(userid)) {
73 String pswd = StringUtils.defaultString(request.getParameter(PARAMETER_PSWD));
74 String realm = StringUtils.defaultString(request.getParameter(PARAMETER_REALM));
75
76 CredentialsCallbackHandler callbackHandler = new PlainTextCallbackHandler(userid, pswd.toCharArray(), realm);
77 LoginResult result = authenticate(callbackHandler, getJaasChain());
78 if (result.getStatus() == LoginResult.STATUS_SUCCEEDED && request.getMethod().equalsIgnoreCase("POST")) {
79 return new LoginResult(LoginResult.STATUS_SUCCEEDED_REDIRECT_REQUIRED, result.getSubject());
80 }
81 return result;
82 }
83 return LoginResult.NOT_HANDLED;
84 }
85
86 public String getJaasChain() {
87 return this.jaasChain;
88 }
89
90
91 public void setJaasChain(String jaasChain) {
92 this.jaasChain = jaasChain;
93 }
94
95 }