/* * 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 . * * 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 , * for Silverwrist Design Studios. Portions created by Eric J. Bowersox are * Copyright (C) 2003 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved. * * Contributor(s): */ 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 { /*-------------------------------------------------------------------------------- * Constructor *-------------------------------------------------------------------------------- */ protected LibrarySourceID() { // do nothing } // end constructor /*-------------------------------------------------------------------------------- * External operations *-------------------------------------------------------------------------------- */ public IDPDescriptorType castIDPDescriptorType(Object o) { if (o instanceof IDPDescriptorType) return (IDPDescriptorType)o; throw new ClassCastException("LibrarySourceID.castIDPDescriptorType: invalid cast"); } // 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)); return (ProviderDirectory)(eaa.getAttribute("org.sourceid.sso.providerDirectory")); } // end getProviderDirectory public SPSession getSessionInfoForProvider(Request r, String providerID) { ExternalSessionAttributes esa = (ExternalSessionAttributes)(r.queryService(ExternalSessionAttributes.class)); return (SPSession)(esa.getAttribute("org.sourceid.sso.session." + providerID)); } // end getSessionInfoForProvider public AccountHandler getAccountHandler(Request r) { ExternalAppAttributes eaa = (ExternalAppAttributes)(r.queryService(ExternalAppAttributes.class)); return (AccountHandler)(eaa.getAttribute("org.sourceid.sso.accountHandler")); } // 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 *-------------------------------------------------------------------------------- */ public abstract boolean isUserFederatedWith(Request r, String providerID) throws DatabaseException; } // end class LibrarySourceID