From: <fg...@us...> - 2010-12-04 09:34:02
|
Revision: 3147 http://openutils.svn.sourceforge.net/openutils/?rev=3147&view=rev Author: fgiust Date: 2010-12-04 09:33:55 +0000 (Sat, 04 Dec 2010) Log Message: ----------- miscellaneus fixes/enhancements to the cas integration module (setup for the first proper release) Modified Paths: -------------- trunk/openutils-mgnlcas/pom.xml trunk/openutils-mgnlcas/src/main/assembly/assembly-bundle.xml trunk/openutils-mgnlcas/src/main/java/net/sourceforge/openutils/mgnlcas/CASAuthenticationModule.java trunk/openutils-mgnlcas/src/main/java/net/sourceforge/openutils/mgnlcas/CasClientCallback.java trunk/openutils-mgnlcas/src/main/java/net/sourceforge/openutils/mgnlcas/CasLogin.java trunk/openutils-mgnlcas/src/main/java/net/sourceforge/openutils/mgnlcas/CasMagnoliaUser.java trunk/openutils-mgnlcas/src/main/java/net/sourceforge/openutils/mgnlcas/RequestUtils.java Added Paths: ----------- trunk/openutils-mgnlcas/src/main/java/net/sourceforge/openutils/mgnlcas/CasModuleVersionHandler.java trunk/openutils-mgnlcas/src/main/resources/META-INF/ trunk/openutils-mgnlcas/src/main/resources/META-INF/magnolia/ trunk/openutils-mgnlcas/src/main/resources/META-INF/magnolia/cas.xml Removed Paths: ------------- trunk/openutils-mgnlcas/src/main/java/info/ Modified: trunk/openutils-mgnlcas/pom.xml =================================================================== --- trunk/openutils-mgnlcas/pom.xml 2010-11-18 15:08:23 UTC (rev 3146) +++ trunk/openutils-mgnlcas/pom.xml 2010-12-04 09:33:55 UTC (rev 3147) @@ -1,4 +1,5 @@ -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <parent> <groupId>net.sourceforge.openutils</groupId> <artifactId>openutils-parent</artifactId> @@ -49,7 +50,7 @@ <dependency> <groupId>info.magnolia</groupId> <artifactId>magnolia-jaas</artifactId> - <version>4.3.8</version> + <version>4.4</version> </dependency> <dependency> <groupId>org.jasig.cas.client</groupId> Modified: trunk/openutils-mgnlcas/src/main/assembly/assembly-bundle.xml =================================================================== --- trunk/openutils-mgnlcas/src/main/assembly/assembly-bundle.xml 2010-11-18 15:08:23 UTC (rev 3146) +++ trunk/openutils-mgnlcas/src/main/assembly/assembly-bundle.xml 2010-12-04 09:33:55 UTC (rev 3147) @@ -28,6 +28,7 @@ <outputDirectory>bin</outputDirectory> <includes> <include>net.sourceforge.openutils:*</include> + <include>org.jasig.cas.client:*</include> </includes> </dependencySet> </dependencySets> Modified: trunk/openutils-mgnlcas/src/main/java/net/sourceforge/openutils/mgnlcas/CASAuthenticationModule.java =================================================================== --- trunk/openutils-mgnlcas/src/main/java/net/sourceforge/openutils/mgnlcas/CASAuthenticationModule.java 2010-11-18 15:08:23 UTC (rev 3146) +++ trunk/openutils-mgnlcas/src/main/java/net/sourceforge/openutils/mgnlcas/CASAuthenticationModule.java 2010-12-04 09:33:55 UTC (rev 3147) @@ -85,7 +85,7 @@ * * </pre> * @author fgiust - * @version $Id: CASAuthenticationModule.java 4124 2008-09-22 14:56:46Z fgiust $ + * @version $Id: CASAuthenticationModule.java 803 2010-11-16 13:52:15Z fgiust $ */ public class CASAuthenticationModule extends AbstractLoginModule implements LoginModule, UserAwareLoginModule { @@ -258,6 +258,9 @@ { principal = assertion.getPrincipal(); + + log.debug("principal is {}", principal.getName()); + subject.getPrincipals().add(principal); setEntity(); @@ -337,9 +340,16 @@ Map<String, String> attributes = this.principal.getAttributes(); + for (Map.Entry<String, String> attr : attributes.entrySet()) + { + entity.addProperty(attr.getKey(), attr.getValue()); + } + String fullName = attributes.get("title"); + if (fullName != null) { + log.debug("full name is {}", fullName); entity.addProperty(Entity.FULL_NAME, fullName); } Modified: trunk/openutils-mgnlcas/src/main/java/net/sourceforge/openutils/mgnlcas/CasClientCallback.java =================================================================== --- trunk/openutils-mgnlcas/src/main/java/net/sourceforge/openutils/mgnlcas/CasClientCallback.java 2010-11-18 15:08:23 UTC (rev 3146) +++ trunk/openutils-mgnlcas/src/main/java/net/sourceforge/openutils/mgnlcas/CasClientCallback.java 2010-12-04 09:33:55 UTC (rev 3147) @@ -19,11 +19,12 @@ package net.sourceforge.openutils.mgnlcas; +import info.magnolia.cms.security.Security; import info.magnolia.cms.security.auth.callback.AbstractHttpClientCallback; +import info.magnolia.context.MgnlContext; import java.io.IOException; -import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; @@ -138,16 +139,13 @@ if (session != null) { // don't redirect to cas if user is already logged in - if (session.getAttribute("info.magnolia.context.UserContextImpl.user") != null) + if (MgnlContext.getUser() != null + && !MgnlContext.getUser().getName().equals(Security.getAnonymousUser().getName())) { try { - request.getRequestDispatcher("/errors/401.html").forward(request, response); + response.sendError(HttpServletResponse.SC_UNAUTHORIZED); } - catch (ServletException e) - { - // ignore - } catch (IOException e) { // ignore @@ -162,7 +160,7 @@ if (CommonUtils.isBlank(ticket) && assertion == null && !wasGatewayed) { - String service = RequestUtils.absoluteUrl(request); + // String service = RequestUtils.absoluteUrl(request); log.debug("no ticket and no assertion found"); if (this.gateway) { @@ -173,8 +171,8 @@ final String serviceUrl = CommonUtils.constructServiceUrl( request, response, - service, null, + RequestUtils.serverName(request), this.artifactParameterName, this.encodeServiceUrl); Modified: trunk/openutils-mgnlcas/src/main/java/net/sourceforge/openutils/mgnlcas/CasLogin.java =================================================================== --- trunk/openutils-mgnlcas/src/main/java/net/sourceforge/openutils/mgnlcas/CasLogin.java 2010-11-18 15:08:23 UTC (rev 3146) +++ trunk/openutils-mgnlcas/src/main/java/net/sourceforge/openutils/mgnlcas/CasLogin.java 2010-12-04 09:33:55 UTC (rev 3147) @@ -39,6 +39,7 @@ import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang.StringUtils; +import org.jasig.cas.client.util.CommonUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -128,7 +129,14 @@ if (StringUtils.isNotEmpty(ticket)) { - String service = RequestUtils.absoluteUrl(request); + String service = CommonUtils.constructServiceUrl( + request, + response, + null, + RequestUtils.serverName(request), + this.artifactParameterName, + true); + // solo se è l'ultimo carattere if (service.lastIndexOf("/") == (service.length() - 1)) { Modified: trunk/openutils-mgnlcas/src/main/java/net/sourceforge/openutils/mgnlcas/CasMagnoliaUser.java =================================================================== --- trunk/openutils-mgnlcas/src/main/java/net/sourceforge/openutils/mgnlcas/CasMagnoliaUser.java 2010-11-18 15:08:23 UTC (rev 3146) +++ trunk/openutils-mgnlcas/src/main/java/net/sourceforge/openutils/mgnlcas/CasMagnoliaUser.java 2010-12-04 09:33:55 UTC (rev 3147) @@ -20,7 +20,11 @@ package net.sourceforge.openutils.mgnlcas; import info.magnolia.cms.security.ExternalUser; +import info.magnolia.cms.security.auth.Entity; +import java.util.Iterator; +import java.util.Set; + import javax.security.auth.Subject; @@ -37,11 +41,31 @@ private static final long serialVersionUID = 42L; /** + * User properties. + */ + private Entity userDetails; + + /** * @param subject */ protected CasMagnoliaUser(Subject subject) { super(subject); + + final Set<Entity> principalDetails = subject.getPrincipals(Entity.class); + final Iterator<Entity> entityIterator = principalDetails.iterator(); + this.userDetails = entityIterator.next(); + setSubject(subject); } + /** + * {@inheritDoc} + */ + @Override + public String getProperty(String propertyName) + { + // todo: why this is not in ExternalUser? + return (String) this.userDetails.getProperty(propertyName); + } + } Added: trunk/openutils-mgnlcas/src/main/java/net/sourceforge/openutils/mgnlcas/CasModuleVersionHandler.java =================================================================== --- trunk/openutils-mgnlcas/src/main/java/net/sourceforge/openutils/mgnlcas/CasModuleVersionHandler.java (rev 0) +++ trunk/openutils-mgnlcas/src/main/java/net/sourceforge/openutils/mgnlcas/CasModuleVersionHandler.java 2010-12-04 09:33:55 UTC (rev 3147) @@ -0,0 +1,32 @@ +/** + * + * Magnolia CAS integration module (http://www.openmindlab.com/lab/products/mgnlcas.html) + * Copyright(C) 2007-2010, Openmind S.r.l. http://www.openmindonline.it + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +package net.sourceforge.openutils.mgnlcas; + +import info.magnolia.module.DefaultModuleVersionHandler; + + +/** + * @author fgiust + * @version $Id$ + */ +public class CasModuleVersionHandler extends DefaultModuleVersionHandler +{ + // nothing to do at the moment +} Property changes on: trunk/openutils-mgnlcas/src/main/java/net/sourceforge/openutils/mgnlcas/CasModuleVersionHandler.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Modified: trunk/openutils-mgnlcas/src/main/java/net/sourceforge/openutils/mgnlcas/RequestUtils.java =================================================================== --- trunk/openutils-mgnlcas/src/main/java/net/sourceforge/openutils/mgnlcas/RequestUtils.java 2010-11-18 15:08:23 UTC (rev 3146) +++ trunk/openutils-mgnlcas/src/main/java/net/sourceforge/openutils/mgnlcas/RequestUtils.java 2010-12-04 09:33:55 UTC (rev 3147) @@ -37,6 +37,17 @@ public static String absoluteUrl(HttpServletRequest request) { + StringBuilder sb = new StringBuilder(); + sb.append(serverName(request)); + sb.append(request.getRequestURI()); + + return sb.toString(); + + } + + public static String serverName(HttpServletRequest request) + { + String host = request.getServerName(); int port = request.getServerPort(); String scheme = request.getScheme(); @@ -49,7 +60,6 @@ sb.append(":"); sb.append(port); } - sb.append(request.getRequestURI()); return sb.toString(); Added: trunk/openutils-mgnlcas/src/main/resources/META-INF/magnolia/cas.xml =================================================================== --- trunk/openutils-mgnlcas/src/main/resources/META-INF/magnolia/cas.xml (rev 0) +++ trunk/openutils-mgnlcas/src/main/resources/META-INF/magnolia/cas.xml 2010-12-04 09:33:55 UTC (rev 3147) @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE module SYSTEM "module.dtd" > +<module> + <name>cas</name> + <displayName>Openutils CAS integration module</displayName> + <description>Add supports for the Jasig-CAS SSO solution</description> + <versionHandler>net.sourceforge.openutils.mgnlcas.CasModuleVersionHandler</versionHandler> + <version>${project.version}</version> + <dependencies> + <dependency> + <name>adminInterface</name> + <version>3.1/*</version> + </dependency> + </dependencies> +</module> \ No newline at end of file Property changes on: trunk/openutils-mgnlcas/src/main/resources/META-INF/magnolia/cas.xml ___________________________________________________________________ Added: svn:mime-type + text/xml Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |