You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by sm...@apache.org on 2019/03/08 23:42:34 UTC
[directory-fortress-enmasse] 01/01: FC-265 - Delegated
Administration Enhancements to Apache Fortress REST
This is an automated email from the ASF dual-hosted git repository.
smckinney pushed a commit to branch FC-265
in repository https://gitbox.apache.org/repos/asf/directory-fortress-enmasse.git
commit 839c5ddee886500d33f5f2de5d53d70146404d35
Author: Shawn McKinney <sm...@apache.org>
AuthorDate: Fri Mar 8 17:42:31 2019 -0600
FC-265 - Delegated Administration Enhancements to Apache Fortress REST
---
.../fortress/rest/FortressServiceImpl.java | 12 ++--
.../apache/directory/fortress/rest/SecUtils.java | 70 ++++++++++++++++++++++
2 files changed, 78 insertions(+), 4 deletions(-)
diff --git a/src/main/java/org/apache/directory/fortress/rest/FortressServiceImpl.java b/src/main/java/org/apache/directory/fortress/rest/FortressServiceImpl.java
index 1cd57b0..34b575e 100644
--- a/src/main/java/org/apache/directory/fortress/rest/FortressServiceImpl.java
+++ b/src/main/java/org/apache/directory/fortress/rest/FortressServiceImpl.java
@@ -26,12 +26,12 @@ import javax.ws.rs.Path;
import javax.ws.rs.core.Context;
import org.apache.directory.fortress.core.GlobalErrIds;
-import org.apache.directory.fortress.core.model.FortRequest;
-import org.apache.directory.fortress.core.model.FortResponse;
+import org.apache.directory.fortress.core.model.*;
import org.apache.directory.fortress.core.rest.HttpIds;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Service;
+
/**
* Implementation for Fortress Rest Service methods forwards to delegate. This class is thread safe.
*
@@ -74,6 +74,7 @@ public class FortressServiceImpl implements FortressService
* **************************************************************************************************************************************
*/
+
/**
* {@inheritDoc}
*/
@@ -83,10 +84,13 @@ public class FortressServiceImpl implements FortressService
@Override
public FortResponse addUser( FortRequest request )
{
- return adminMgrImpl.addUser( request );
+ FortResponse response = SecUtils.initializeSession(request, httpRequest);
+ if( response == null )
+ response = adminMgrImpl.addUser( request );
+ return response;
}
-
+
/**
* {@inheritDoc}
*/
diff --git a/src/main/java/org/apache/directory/fortress/rest/SecUtils.java b/src/main/java/org/apache/directory/fortress/rest/SecUtils.java
new file mode 100644
index 0000000..6bd6ef1
--- /dev/null
+++ b/src/main/java/org/apache/directory/fortress/rest/SecUtils.java
@@ -0,0 +1,70 @@
+//
+// Source code recreated from a .class file by IntelliJ IDEA
+// (powered by Fernflower decompiler)
+//
+
+package org.apache.directory.fortress.rest;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.directory.fortress.core.GlobalErrIds;
+import org.apache.directory.fortress.core.SecurityException;
+import org.apache.directory.fortress.core.model.FortRequest;
+import org.apache.directory.fortress.core.model.FortResponse;
+import org.apache.directory.fortress.core.model.Session;
+import org.apache.directory.fortress.realm.J2eePolicyMgr;
+import org.apache.directory.fortress.realm.J2eePolicyMgrFactory;
+import org.apache.log4j.Logger;
+
+public class SecUtils
+{
+ private static final Logger LOG = Logger.getLogger(SecUtils.class.getName());
+
+ static FortResponse initializeSession(FortRequest fortRequest, HttpServletRequest httpRequest)
+ {
+ Session realmSession;
+ FortResponse fortResponse = null;
+
+ // If the session is not contained in the request, use the service caller:
+ if( fortRequest.getSession() == null)
+ {
+ if( httpRequest == null)
+ {
+ fortResponse = new FortResponse();
+ fortResponse.setErrorCode(GlobalErrIds.REST_NULL_HTTP_REQ_ERR );
+ fortResponse.setErrorMessage( "HTTP Requst is NULL");
+ }
+ else
+ {
+ try
+ {
+ J2eePolicyMgr j2eePolicyMgr = J2eePolicyMgrFactory.createInstance();
+ String szPrincipal = httpRequest.getUserPrincipal().toString();
+ realmSession = j2eePolicyMgr.deserialize(szPrincipal);
+ if(realmSession != null)
+ {
+ fortRequest.setSession( realmSession );
+ }
+ }
+ catch (SecurityException se)
+ {
+ String error = "intializeSession caught SecurityException=" + se;
+ fortResponse = new FortResponse();
+ createError(fortResponse, se);
+ }
+ }
+ }
+ return fortResponse;
+ }
+
+ private static void createError(FortResponse response, SecurityException se )
+ {
+ LOG.info( "Caught " + se );
+ response.setErrorCode( se.getErrorId() );
+ response.setErrorMessage( se.getMessage() );
+ response.setHttpStatus(se.getHttpStatus());
+ }
+
+
+
+}