completed support for SourceID IDP, not tested yet

This commit is contained in:
Eric J. Bowersox
2003-06-18 04:23:20 +00:00
parent e62375e6ee
commit e33daac2d2
20 changed files with 1041 additions and 8 deletions

View File

@@ -306,6 +306,14 @@ public class LibraryCast
} // end toMap
public final Map.Entry toMapEntry(Object o)
{
if (o instanceof Map.Entry)
return (Map.Entry)o;
throw new ClassCastException("LibraryCast.toMapEntry: invalid cast");
} // end toMapEntry
public final OptionSet toOptionSet(Object o)
{
if (o instanceof OptionSet)

View File

@@ -166,7 +166,15 @@ public abstract class ServletBase extends HttpServlet implements WebConstants
} // end if
return appcon.wrapServices(base);
ServiceProvider svc = appcon.wrapServices(base);
// Hook around the ObjectProvider implementation to support the __internal__ namespace.
ObjectProvider base_objp = (ObjectProvider)(svc.queryService(ObjectProvider.class));
SingleNamespaceObjectProvider objp = new SingleNamespaceObjectProvider("__internal__","RequestServices",base_objp);
objp.setObject("application",getServletContext());
objp.setObject("request",req);
objp.setObject("response",resp);
return new SingletonServiceProvider("RequestServices",svc,ObjectProvider.class,objp);
} // end createRequestServices

View File

@@ -439,4 +439,32 @@ public class RequestHelper
} // end getChainParameter
public Object getExternalAppAttribute(String name)
{
ExternalAppAttributes eaa = (ExternalAppAttributes)(m_req.queryService(ExternalAppAttributes.class));
return eaa.getAttribute(name);
} // end getExternalAppAttribute
public Object getExternalSessionAttribute(String name)
{
ExternalSessionAttributes esa = (ExternalSessionAttributes)(m_req.queryService(ExternalSessionAttributes.class));
return esa.getAttribute(name);
} // end getExternalSessionAttribute
public void removeExternalSessionAttribute(String name)
{
ExternalSessionAttributes esa = (ExternalSessionAttributes)(m_req.queryService(ExternalSessionAttributes.class));
esa.removeAttribute(name);
} // end removeExternalSessionAttribute
public void setExternalSessionAttribute(String name, Object val)
{
ExternalSessionAttributes esa = (ExternalSessionAttributes)(m_req.queryService(ExternalSessionAttributes.class));
esa.setAttribute(name,val);
} // end setExternalSessionAttribute
} // end class RequestHelper

View File

@@ -0,0 +1,134 @@
/*
* The contents of this file are subject to the Mozilla Public License Version 1.1
* (the "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at <http://www.mozilla.org/MPL/>.
*
* Software distributed under the License is distributed on an "AS IS" basis, WITHOUT
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
* language governing rights and limitations under the License.
*
* The Original Code is the Venice Web Communities System.
*
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
* Copyright (C) 2002-03 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
*
* Contributor(s):
*/
package com.silverwrist.dynamo.velocity;
import java.util.*;
public class VelocityPage implements VelocityRenderable
{
/*--------------------------------------------------------------------------------
* Attributes
*--------------------------------------------------------------------------------
*/
private String m_templ;
private String m_mime;
private Hashtable m_params = new Hashtable();
/*--------------------------------------------------------------------------------
* Constructors
*--------------------------------------------------------------------------------
*/
public VelocityPage(String templ)
{
m_templ = templ;
m_mime = "text/html";
} // end constructor
public VelocityPage(String templ, String mime)
{
m_templ = templ;
m_mime = mime;
} // end constructor
/*--------------------------------------------------------------------------------
* Implementations from interface VelocityParamSupplier
*--------------------------------------------------------------------------------
*/
/**
* Returns the value of a parameter set on the object.
*
* @param key The name of the parameter to look up.
* @return The parameter's value, or <CODE>null</CODE> if the parameter was not set.
*/
public Object getParameter(String key)
{
return m_params.get(key);
} // end getParameter
/**
* Returns a <CODE>java.util.Collection</CODE> of all parameter names currently defined on this object.
*
* @return A collection of all parameter names currently defined.
*/
public Collection getParameterNames()
{
return Collections.unmodifiableSet(m_params.keySet());
} // end getParameterNames
/*--------------------------------------------------------------------------------
* Implementations from interface VelocityRenderable
*--------------------------------------------------------------------------------
*/
/**
* Returns the MIME type of the output to be rendered. Usually, this will be "text/html".
*
* @return The MIME type of the output.
*/
public String getMimeType()
{
return m_mime;
} // end getMimeType
/**
* Returns the resource name of the Velocity template to be used in rendering this object. This pathname
* is interpreted relative to the "resource root path" specified in the Velocity renderer's configuration.
* The template engine loads it via the standard
* {@link com.silverwrist.dynamo.iface.ResourceProvider ResourceProvider}, and then applies the parameters
* contained in this object to it.
*
* @return The resource pathname of the Velocity template to use.
*/
public String getTemplateName()
{
return m_templ;
} // end getTemplateName
/*--------------------------------------------------------------------------------
* External operations
*--------------------------------------------------------------------------------
*/
public void setMimeType(String s)
{
m_mime = s;
} // end setMimeType
public void setTemplateName(String s)
{
m_templ = s;
} // end setTemplateName
public void setParameter(String key, Object val)
{
m_params.put(key,val);
} // end setParameter
} // end class VelocityPage

View File

@@ -17,12 +17,15 @@
*/
package com.silverwrist.venice.sourceid;
import java.util.*;
import javax.servlet.ServletContext;
import org.sourceid.sso.handlers.AccountHandler;
import org.sourceid.sso.util.*;
import org.sourceid.sso.xml.*;
import org.sourceid.sso.xml.lib.*;
import com.silverwrist.dynamo.except.*;
import com.silverwrist.dynamo.iface.*;
import com.silverwrist.venice.session.SessionInfoParams;
public abstract class LibrarySourceID
{
@@ -48,6 +51,30 @@ public abstract class LibrarySourceID
} // end castIDPDescriptorType
public SPDescriptorType castSPDescriptorType(Object o)
{
if (o instanceof SPDescriptorType)
return (SPDescriptorType)o;
throw new ClassCastException("LibrarySourceID.castSPDescriptorType: invalid cast");
} // end castSPDescriptorType
public AuthnContext castAuthnContext(Object o)
{
if (o instanceof AuthnContext)
return (AuthnContext)o;
throw new ClassCastException("LibrarySourceID.castAuthnContext: invalid cast");
} // end castAuthnRequestType
public AuthnRequestType castAuthnRequestType(Object o)
{
if (o instanceof AuthnRequestType)
return (AuthnRequestType)o;
throw new ClassCastException("LibrarySourceID.castAuthnRequestType: invalid cast");
} // end castAuthnRequestType
public ProviderDirectory getProviderDirectory(Request r)
{
ExternalAppAttributes eaa = (ExternalAppAttributes)(r.queryService(ExternalAppAttributes.class));
@@ -69,6 +96,41 @@ public abstract class LibrarySourceID
} // end getAccountHandler
public IDPSession getIDPSession(Request r, boolean create)
{
ExternalSessionAttributes esa = (ExternalSessionAttributes)(r.queryService(ExternalSessionAttributes.class));
IDPSession rc = (IDPSession)(esa.getAttribute(ServletUtils.SES_KEY_SSO_SESSION));
if ((rc==null) && create)
{ // create a new IDP session
ObjectProvider op = (ObjectProvider)(r.queryService(ObjectProvider.class));
ServletContext ctxt = (ServletContext)(op.getObject("__internal__","application"));
SessionInfoProvider sip = (SessionInfoProvider)(r.queryService(SessionInfoProvider.class));
DynamoUser user = (DynamoUser)(sip.getSessionInfo().getObject(SessionInfoParams.NAMESPACE,
SessionInfoParams.ATTR_USER));
rc = new IDPSession(ctxt,user);
esa.setAttribute(ServletUtils.SES_KEY_SSO_SESSION,rc);
} // end if
return rc;
} // end getIDPSession
public IDPSession.Entry getEntryForProvider(IDPSession sess, String provider_id)
{
Iterator it = sess.getRemoteSessions().iterator();
while (it.hasNext())
{ // look for an entry whose provider ID matches
IDPSession.Entry ntry = (IDPSession.Entry)(it.next());
if (ntry.getProviderID().equals(provider_id))
return ntry;
} // end while
return null;
} // end getEntryForProvider
/*--------------------------------------------------------------------------------
* Abstract operations which must be overridden
*--------------------------------------------------------------------------------