summaryrefslogtreecommitdiffstats
path: root/base/server/cms/src
diff options
context:
space:
mode:
authorFraser Tweedale <ftweedal@redhat.com>2016-11-29 18:39:45 +1000
committerFraser Tweedale <ftweedal@redhat.com>2017-03-16 17:46:18 +1000
commitef84ef36be06944a7f6338ed022f13e066cd5c32 (patch)
tree9d3b71707ec434b9b2e6af096b4f1829654d721d /base/server/cms/src
parent76f60251f7e1b2f1f9ad1752121c0c5cb1cb5b8b (diff)
Update SessionContextInterceptor to handle external principals
Part of: https://pagure.io/dogtagpki/issue/1359
Diffstat (limited to 'base/server/cms/src')
-rw-r--r--base/server/cms/src/org/dogtagpki/server/rest/SessionContextInterceptor.java19
1 files changed, 10 insertions, 9 deletions
diff --git a/base/server/cms/src/org/dogtagpki/server/rest/SessionContextInterceptor.java b/base/server/cms/src/org/dogtagpki/server/rest/SessionContextInterceptor.java
index b6461abfd..b3b3c3b8f 100644
--- a/base/server/cms/src/org/dogtagpki/server/rest/SessionContextInterceptor.java
+++ b/base/server/cms/src/org/dogtagpki/server/rest/SessionContextInterceptor.java
@@ -29,9 +29,11 @@ import javax.ws.rs.core.Context;
import javax.ws.rs.core.SecurityContext;
import javax.ws.rs.ext.Provider;
+import org.apache.catalina.realm.GenericPrincipal;
import org.jboss.resteasy.core.ResourceMethodInvoker;
import com.netscape.certsrv.apps.CMS;
+import com.netscape.certsrv.authentication.ExternalAuthToken;
import com.netscape.certsrv.authentication.IAuthToken;
import com.netscape.certsrv.base.ForbiddenException;
import com.netscape.certsrv.base.SessionContext;
@@ -80,14 +82,12 @@ public class SessionContextInterceptor implements ContainerRequestFilter {
CMS.debug("SessionContextInterceptor: principal: " + principal.getName());
- // If unrecognized principal, reject request.
- if (!(principal instanceof PKIPrincipal)) {
- CMS.debug("SessionContextInterceptor: Invalid user principal.");
- throw new ForbiddenException("Invalid user principal.");
- }
+ IAuthToken authToken = null;
- PKIPrincipal pkiPrincipal = (PKIPrincipal) principal;
- IAuthToken authToken = pkiPrincipal.getAuthToken();
+ if (principal instanceof PKIPrincipal)
+ authToken = ((PKIPrincipal) principal).getAuthToken();
+ else if (principal instanceof GenericPrincipal)
+ authToken = new ExternalAuthToken((GenericPrincipal) principal);
// If missing auth token, reject request.
if (authToken == null) {
@@ -104,7 +104,8 @@ public class SessionContextInterceptor implements ContainerRequestFilter {
context.put(SessionContext.LOCALE, locale);
context.put(SessionContext.AUTH_TOKEN, authToken);
- context.put(SessionContext.USER_ID, pkiPrincipal.getName());
- context.put(SessionContext.USER, pkiPrincipal.getUser());
+ context.put(SessionContext.USER_ID, principal.getName());
+ if (principal instanceof PKIPrincipal)
+ context.put(SessionContext.USER, ((PKIPrincipal) principal).getUser());
}
}