Author: anil.saldhana(a)jboss.com
Date: 2009-10-12 12:39:33 -0400 (Mon, 12 Oct 2009)
New Revision: 849
Modified:
identity-federation/trunk/jboss-identity-web/src/main/java/org/jboss/identity/federation/web/handlers/saml2/RolesGenerationHandler.java
identity-federation/trunk/jboss-identity-web/src/main/java/org/jboss/identity/federation/web/handlers/saml2/SAML2AttributeHandler.java
Log:
JBID-198: saml2 handler arch
Modified:
identity-federation/trunk/jboss-identity-web/src/main/java/org/jboss/identity/federation/web/handlers/saml2/RolesGenerationHandler.java
===================================================================
---
identity-federation/trunk/jboss-identity-web/src/main/java/org/jboss/identity/federation/web/handlers/saml2/RolesGenerationHandler.java 2009-10-12
16:32:46 UTC (rev 848)
+++
identity-federation/trunk/jboss-identity-web/src/main/java/org/jboss/identity/federation/web/handlers/saml2/RolesGenerationHandler.java 2009-10-12
16:39:33 UTC (rev 849)
@@ -23,7 +23,7 @@
import java.security.Principal;
import java.util.List;
-
+
import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
@@ -73,6 +73,10 @@
this.insantiateRoleValidator(roleGeneratorString);
}
+
+ /**
+ * @see {@code SAML2Handler#handleRequestType(SAML2HandlerRequest,
SAML2HandlerResponse)}
+ */
@SuppressWarnings("unchecked")
public void handleRequestType(SAML2HandlerRequest request,
SAML2HandlerResponse response) throws ProcessingException
@@ -99,6 +103,9 @@
response.setRoles(roles);
}
+ /**
+ * @see {@code SAML2Handler#handleStatusResponseType(SAML2HandlerRequest,
SAML2HandlerResponse)}
+ */
public void handleStatusResponseType(SAML2HandlerRequest request, SAML2HandlerResponse
response)
throws ProcessingException
{
Modified:
identity-federation/trunk/jboss-identity-web/src/main/java/org/jboss/identity/federation/web/handlers/saml2/SAML2AttributeHandler.java
===================================================================
---
identity-federation/trunk/jboss-identity-web/src/main/java/org/jboss/identity/federation/web/handlers/saml2/SAML2AttributeHandler.java 2009-10-12
16:32:46 UTC (rev 848)
+++
identity-federation/trunk/jboss-identity-web/src/main/java/org/jboss/identity/federation/web/handlers/saml2/SAML2AttributeHandler.java 2009-10-12
16:39:33 UTC (rev 849)
@@ -22,6 +22,13 @@
package org.jboss.identity.federation.web.handlers.saml2;
+import java.security.Principal;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpSession;
+
import org.apache.log4j.Logger;
import org.jboss.identity.federation.core.config.IDPType;
import org.jboss.identity.federation.core.exceptions.ConfigurationException;
@@ -32,7 +39,9 @@
import org.jboss.identity.federation.core.saml.v2.interfaces.SAML2HandlerConfig;
import org.jboss.identity.federation.core.saml.v2.interfaces.SAML2HandlerRequest;
import org.jboss.identity.federation.core.saml.v2.interfaces.SAML2HandlerResponse;
+import org.jboss.identity.federation.saml.v2.protocol.LogoutRequestType;
import org.jboss.identity.federation.web.constants.GeneralConstants;
+import org.jboss.identity.federation.web.core.HTTPContext;
/**
* Handler dealing with attributes for SAML2
@@ -45,6 +54,7 @@
private boolean trace = log.isTraceEnabled();
protected AttributeManager attribManager = new EmptyAttributeManager();
+ protected List<String> attributeKeys = new ArrayList<String>();
@Override
public void initChainConfig(SAML2HandlerChainConfig handlerChainConfig) throws
ConfigurationException
@@ -56,20 +66,43 @@
IDPType idpType = (IDPType) config;
String attribStr = idpType.getAttributeManager();
insantiateAttributeManager(attribStr);
- }
+ }
}
+ @SuppressWarnings("unchecked")
@Override
public void initHandlerConfig(SAML2HandlerConfig handlerConfig) throws
ConfigurationException
{
super.initHandlerConfig(handlerConfig);
String attribStr = (String)
this.handlerConfig.getParameter(GeneralConstants.ATTIBUTE_MANAGER);
- this.insantiateAttributeManager(attribStr);
+ this.insantiateAttributeManager(attribStr);
+ List<String> ak = (List<String>)
this.handlerConfig.getParameter(GeneralConstants.ATTRIBUTE_KEYS);
+ if(ak != null)
+ this.attributeKeys.addAll(ak);
}
+ @SuppressWarnings("unchecked")
public void handleRequestType(SAML2HandlerRequest request, SAML2HandlerResponse
response) throws ProcessingException
{
+ //Do not handle log out request interaction
+ if(request.getSAML2Object() instanceof LogoutRequestType)
+ return ;
+
+ //only handle IDP side
+ if(request.getType() == SAML2HandlerRequest.HANDLER_TYPE.SP)
+ return;
+
+ HTTPContext httpContext = (HTTPContext) request.getContext();
+ HttpSession session = httpContext.getRequest().getSession(false);
+
+ Principal userPrincipal = (Principal)
session.getAttribute(GeneralConstants.PRINCIPAL_ID);
+ Map<String, Object> attribs = (Map<String, Object>)
session.getAttribute(GeneralConstants.ATTRIBUTES);
+ if(attribs == null)
+ {
+ attribs = this.attribManager.getAttributes(userPrincipal, attributeKeys);
+ session.setAttribute(GeneralConstants.ATTRIBUTES, attribs);
+ }
}
public void handleStatusResponseType(SAML2HandlerRequest request, SAML2HandlerResponse
response)
Show replies by date