import java.util.Locale;
-import javax.security.auth.login.CredentialNotFoundException;
import javax.security.auth.login.LoginContext;
import javax.security.auth.login.LoginException;
import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
import org.argeo.cms.CmsException;
import org.argeo.cms.auth.CurrentUser;
import org.eclipse.swt.widgets.Display;
public class LoginEntryPoint implements EntryPoint, CmsView {
+ protected final static String HEADER_WWW_AUTHENTICATE = "WWW-Authenticate";
+ protected final static String HEADER_AUTHORIZATION = "Authorization";
// private final static Log log = LogFactory.getLog(WorkbenchLogin.class);
// private final Subject subject = new Subject();
private LoginContext loginContext;
// try pre-auth
loginContext = new LoginContext(NodeConstants.LOGIN_CONTEXT_USER, loginShell);
loginContext.login();
- } catch (CredentialNotFoundException e) {
+ } catch (LoginException e) {
loginShell.createUi();
loginShell.open();
+
+// HttpServletRequest request = RWT.getRequest();
+// String authorization = request.getHeader(HEADER_AUTHORIZATION);
+// if (authorization == null || !authorization.startsWith("Negotiate")) {
+// HttpServletResponse response = RWT.getResponse();
+// response.setStatus(401);
+// response.setHeader(HEADER_WWW_AUTHENTICATE, "Negotiate");
+// response.setDateHeader("Date", System.currentTimeMillis());
+// response.setDateHeader("Expires", System.currentTimeMillis() + (24 * 60 * 60 * 1000));
+// response.setHeader("Accept-Ranges", "bytes");
+// response.setHeader("Connection", "Keep-Alive");
+// response.setHeader("Keep-Alive", "timeout=5, max=97");
+// // response.setContentType("text/html; charset=UTF-8");
+// }
+
while (!loginShell.getShell().isDisposed()) {
- // try {
if (!display.readAndDispatch())
display.sleep();
- // } catch (Exception e1) {
- // try {
- // Thread.sleep(3000);
- // } catch (InterruptedException e2) {
- // // silent
- // }
- // ErrorFeedback.show("Login failed", e1);
- // return -1;
- // }
}
- } catch (LoginException e) {
- throw new CmsException("Cannot log in", e);
}
if (CurrentUser.getUsername() == null)
protected HttpServletRequest getRequest() {
return RWT.getRequest();
}
-
-
protected CmsLoginShell createCmsLoginShell() {
return new CmsLoginShell(this) {
throw new CmsException("Cannot log out", e);
}
}
-
-
-
- // @Override
- // public final Subject getSubject() {
- // return subject;
- // }
-
-// @Override
-// public void registerCallbackHandler(CallbackHandler callbackHandler) {
-// throw new UnsupportedOperationException();
-//
-// }
@Override
public void exception(Throwable e) {
public UxContext getUxContext() {
return uxContext;
}
-
-}
+}
\ No newline at end of file