completed support for SourceID IDP, not tested yet
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
*--------------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user