Author: chathuri
Date: Wed Dec 5 18:48:44 2012
New Revision: 1417586
URL: http://svn.apache.org/viewvc?rev=1417586&view=rev
Log:
applying patch by amila for AIRAVATA-668
Modified:
airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/context/RequestContext.java
airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/context/WorkflowContext.java
airavata/trunk/modules/rest/service/src/main/java/org/apache/airavata/services/registry/rest/security/basic/BasicAccessAuthenticator.java
airavata/trunk/modules/rest/webapp/src/main/webapp/user-store/index.jsp
airavata/trunk/modules/security/src/main/java/org/apache/airavata/security/AbstractAuthenticator.java
Modified:
airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/context/RequestContext.java
URL:
http://svn.apache.org/viewvc/airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/context/RequestContext.java?rev=1417586&r1=1417585&r2=1417586&view=diff
==============================================================================
---
airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/context/RequestContext.java
(original)
+++
airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/context/RequestContext.java
Wed Dec 5 18:48:44 2012
@@ -21,6 +21,18 @@ public class RequestContext {
*/
private String userIdentity;
+ public String getGatewayId() {
+ return gatewayId;
+ }
+
+ public void setGatewayId(String gatewayId) {
+ this.gatewayId = gatewayId;
+ }
+
+ /**
+ * The gateway id.
+ */
+ private String gatewayId;
}
Modified:
airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/context/WorkflowContext.java
URL:
http://svn.apache.org/viewvc/airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/context/WorkflowContext.java?rev=1417586&r1=1417585&r2=1417586&view=diff
==============================================================================
---
airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/context/WorkflowContext.java
(original)
+++
airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/context/WorkflowContext.java
Wed Dec 5 18:48:44 2012
@@ -48,4 +48,15 @@ public class WorkflowContext {
return null;
}
+
+ public static synchronized String getGatewayId() {
+
+ RequestContext requestContext = (RequestContext) userThreadLocal.get();
+
+ if (requestContext != null) {
+ return requestContext.getGatewayId();
+ }
+
+ return null;
+ }
}
Modified:
airavata/trunk/modules/rest/service/src/main/java/org/apache/airavata/services/registry/rest/security/basic/BasicAccessAuthenticator.java
URL:
http://svn.apache.org/viewvc/airavata/trunk/modules/rest/service/src/main/java/org/apache/airavata/services/registry/rest/security/basic/BasicAccessAuthenticator.java?rev=1417586&r1=1417585&r2=1417586&view=diff
==============================================================================
---
airavata/trunk/modules/rest/service/src/main/java/org/apache/airavata/services/registry/rest/security/basic/BasicAccessAuthenticator.java
(original)
+++
airavata/trunk/modules/rest/service/src/main/java/org/apache/airavata/services/registry/rest/security/basic/BasicAccessAuthenticator.java
Wed Dec 5 18:48:44 2012
@@ -20,8 +20,9 @@
package org.apache.airavata.services.registry.rest.security.basic;
-import org.apache.airavata.common.context.RequestContext;
-import org.apache.airavata.common.context.WorkflowContext;
+import org.apache.airavata.common.exception.ServerSettingsException;
+import org.apache.airavata.common.utils.Constants;
+import org.apache.airavata.common.utils.ServerSettings;
import org.apache.airavata.security.AbstractAuthenticator;
import org.apache.airavata.security.AuthenticationException;
import org.apache.airavata.security.UserStoreException;
@@ -45,7 +46,6 @@ public class BasicAccessAuthenticator ex
* Header names
*/
private static final String AUTHORISATION_HEADER_NAME = "Authorization";
- public static final String USER_IN_SESSION = "userName";
public BasicAccessAuthenticator() {
super(AUTHENTICATOR_NAME);
@@ -112,17 +112,16 @@ public class BasicAccessAuthenticator ex
}
}
- protected void addUserToSession(String userName, HttpServletRequest
servletRequest) {
+ protected void addUserToSession(String userName, HttpServletRequest
servletRequest) throws AuthenticationException {
+
+ String gatewayId = getGatewayId(servletRequest);
if (servletRequest.getSession() != null) {
- servletRequest.getSession().setAttribute(USER_IN_SESSION,
userName);
+
servletRequest.getSession().setAttribute(Constants.USER_IN_SESSION, userName);
+ servletRequest.getSession().setAttribute(Constants.GATEWAY_NAME,
gatewayId);
}
- // Add user to context - TODO We may need to abstract out this
- RequestContext requestContext = new RequestContext();
- requestContext.setUserIdentity(userName);
-
- WorkflowContext.set(requestContext);
+ addToContext(userName, gatewayId);
}
@Override
@@ -182,7 +181,19 @@ public class BasicAccessAuthenticator ex
HttpSession httpSession = httpServletRequest.getSession();
- return httpSession != null &&
httpSession.getAttribute(USER_IN_SESSION) != null;
+ boolean seenInSession = false;
+
+ if (httpSession != null) {
+ String user =
(String)httpSession.getAttribute(Constants.USER_IN_SESSION);
+ String gateway =
(String)httpSession.getAttribute(Constants.GATEWAY_NAME);
+
+ if (user != null && gateway != null) {
+ addToContext(user, gateway);
+ seenInSession = true;
+ }
+ }
+
+ return seenInSession;
}
@@ -194,6 +205,20 @@ public class BasicAccessAuthenticator ex
return (httpServletRequest.getHeader(AUTHORISATION_HEADER_NAME) !=
null);
}
+ private String getGatewayId(HttpServletRequest request) throws
AuthenticationException {
+ String gatewayId = request.getHeader(Constants.GATEWAY_NAME);
+
+ if (gatewayId == null) {
+ try {
+ gatewayId = ServerSettings.getDefaultGatewayId();
+ } catch (ServerSettingsException e) {
+ throw new AuthenticationException("Unable to retrieve default
gateway", e);
+ }
+ }
+
+ return gatewayId;
+ }
+
@Override
public void configure(Node node) throws RuntimeException {
Modified:
airavata/trunk/modules/rest/webapp/src/main/webapp/user-store/index.jsp
URL:
http://svn.apache.org/viewvc/airavata/trunk/modules/rest/webapp/src/main/webapp/user-store/index.jsp?rev=1417586&r1=1417585&r2=1417586&view=diff
==============================================================================
--- airavata/trunk/modules/rest/webapp/src/main/webapp/user-store/index.jsp
(original)
+++ airavata/trunk/modules/rest/webapp/src/main/webapp/user-store/index.jsp Wed
Dec 5 18:48:44 2012
@@ -2,13 +2,14 @@
<%@ page
import="org.apache.airavata.services.registry.rest.security.basic.BasicAccessAuthenticator"
%>
<%@ page
import="org.apache.airavata.services.registry.rest.security.HttpAuthenticatorFilter"
%>
<%@ page import="java.util.List" %>
+<%@ page import="org.apache.airavata.common.utils.Constants" %>
<%
LocalUserStore localUserStore =
(LocalUserStore)session.getAttribute("LocalUserStore");
if (localUserStore == null) {
- String operatingUser = (String)
session.getAttribute(BasicAccessAuthenticator.USER_IN_SESSION);
+ String operatingUser = (String)
session.getAttribute(Constants.USER_IN_SESSION);
if (operatingUser == null || !operatingUser.equals("admin")) {
HttpAuthenticatorFilter.sendUnauthorisedError(response,
"Insufficient privileges to perform user operations." +
Modified:
airavata/trunk/modules/security/src/main/java/org/apache/airavata/security/AbstractAuthenticator.java
URL:
http://svn.apache.org/viewvc/airavata/trunk/modules/security/src/main/java/org/apache/airavata/security/AbstractAuthenticator.java?rev=1417586&r1=1417585&r2=1417586&view=diff
==============================================================================
---
airavata/trunk/modules/security/src/main/java/org/apache/airavata/security/AbstractAuthenticator.java
(original)
+++
airavata/trunk/modules/security/src/main/java/org/apache/airavata/security/AbstractAuthenticator.java
Wed Dec 5 18:48:44 2012
@@ -1,5 +1,7 @@
package org.apache.airavata.security;
+import org.apache.airavata.common.context.RequestContext;
+import org.apache.airavata.common.context.WorkflowContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -83,6 +85,15 @@ public abstract class AbstractAuthentica
return authenticated;
}
+ protected void addToContext (String userName, String gatewayId) {
+
+ RequestContext requestContext = new RequestContext();
+ requestContext.setUserIdentity(userName);
+ requestContext.setGatewayId(gatewayId);
+
+ WorkflowContext.set(requestContext);
+ }
+
/**
* Gets the current time converted to format in DATE_TIME_FORMAT.