CAS Server 3.1 Release Candidate 2
Scott Battaglia
scott.battaglia at gmail.com
Fri Jun 22 08:49:17 EDT 2007
There is an entry missing in the applicationContext.xml. Its detailed here
in this bug report:
http://www.ja-sig.org/issues/browse/CAS-527
By going to the FishEye tab you can also see the fix.
-Scott
On 6/22/07, Srikanth <cgeek4u at gmail.com> wrote:
>
> Hi Scott,
> I was using the zip version. I am developing on windows. When I was trying
> to replace the file, I found it was 1 byte larger than the subversion one.
>
> Now I integrated with the google. These are the steps I did.
> 1) Added public key in google site and configured the login url to
> http://localhost:8080/cas/login etc
> 2) Modified cas-servlet.xml file according to the instructions given on
> the Wiki. Application deployed successfully.
> 3) Verified the login by going to http://localhost:8080/cas/login. Was
> able to login successfully.
> 4) Now pointed my browser to google url.
> 5) Google redirected the browser to
> http://localhost:8080/cas/login??SAMLRequest=<some long encrypted string
> here>
> 6) Entered the user name and password with which I was able to login
> successfully in step 3.
> 7) Got the following error.
>
> *type* Exception report
>
> *message*
>
> *description* *The server encountered an internal error () that prevented
> it from fulfilling this request.*
>
> *exception*
>
> org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.webflow.engine.ActionExecutionException: Exception thrown executing [AnnotatedAction at 4d93e3
> targetAction = org.jasig.cas.web.flow.GenerateServiceTicketAction at 1e1a0ee, attributes = map[[empty]]] in state 'generateServiceTicket' of flow 'login-webflow' -- action execution attributes were 'map[[empty]]'; nested exception is
> java.lang.NullPointerException
> org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:473)
> org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:426)
> javax.servlet.http.HttpServlet.service
> (HttpServlet.java:709)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> org.jasig.cas.web.init.SafeDispatcherServlet.service(SafeDispatcherServlet.java:115)
>
> *root cause*
>
> org.springframework.webflow.engine.ActionExecutionException: Exception thrown executing [AnnotatedAction at 4d93e3 targetAction = org.jasig.cas.web.flow.GenerateServiceTicketAction at 1e1a0ee, attributes = map[[empty]]] in state 'generateServiceTicket' of flow 'login-webflow' -- action execution attributes were 'map[[empty]]'; nested exception is
> java.lang.NullPointerException
> org.springframework.webflow.engine.ActionExecutor.execute(ActionExecutor.java:68)
> org.springframework.webflow.engine.ActionState.doEnter(ActionState.java:180)
> org.springframework.webflow.engine.State.enter
> (State.java:200)
> org.springframework.webflow.engine.Transition.execute(Transition.java:229)
> org.springframework.webflow.engine.DecisionState.doEnter(DecisionState.java:58)
> org.springframework.webflow.engine.State.enter
> (State.java:200)
> org.springframework.webflow.engine.Transition.execute(Transition.java:229)
> org.springframework.webflow.engine.TransitionableState.onEvent(TransitionableState.java:112)
> org.springframework.webflow.engine.Flow.onEvent
> (Flow.java:572)
> org.springframework.webflow.engine.impl.RequestControlContextImpl.signalEvent(RequestControlContextImpl.java:208)
> org.springframework.webflow.engine.ActionState.doEnter(ActionState.java:185)
> org.springframework.webflow.engine.State.enter
> (State.java:200)
> org.springframework.webflow.engine.Transition.execute(Transition.java:229)
> org.springframework.webflow.engine.TransitionableState.onEvent(TransitionableState.java:112)
> org.springframework.webflow.engine.Flow.onEvent
> (Flow.java:572)
> org.springframework.webflow.engine.impl.RequestControlContextImpl.signalEvent(RequestControlContextImpl.java:208)
> org.springframework.webflow.engine.ActionState.doEnter(ActionState.java:185)
> org.springframework.webflow.engine.State.enter
> (State.java:200)
> org.springframework.webflow.engine.Transition.execute(Transition.java:229)
> org.springframework.webflow.engine.TransitionableState.onEvent(TransitionableState.java:112)
> org.springframework.webflow.engine.Flow.onEvent
> (Flow.java:572)
> org.springframework.webflow.engine.impl.RequestControlContextImpl.signalEvent(RequestControlContextImpl.java:208)
> org.springframework.webflow.engine.ActionState.doEnter(ActionState.java:185)
> org.springframework.webflow.engine.State.enter
> (State.java:200)
> org.springframework.webflow.engine.Transition.execute(Transition.java:229)
> org.springframework.webflow.engine.TransitionableState.onEvent(TransitionableState.java:112)
> org.springframework.webflow.engine.Flow.onEvent
> (Flow.java:572)
> org.springframework.webflow.engine.impl.RequestControlContextImpl.signalEvent(RequestControlContextImpl.java:208)
> org.springframework.webflow.engine.impl.FlowExecutionImpl.signalEvent(FlowExecutionImpl.java
> :214)
> org.springframework.webflow.executor.FlowExecutorImpl.resume(FlowExecutorImpl.java:245)
> org.springframework.webflow.executor.support.FlowRequestHandler.handleFlowRequest(FlowRequestHandler.java:115)
> org.springframework.webflow.executor.mvc.FlowController.handleRequestInternal
> (FlowController.java:172)
> org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
> org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java
> :48)
> org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:857)
> org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:792)
> org.springframework.web.servlet.FrameworkServlet.processRequest
> (FrameworkServlet.java:461)
> org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:426)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
> javax.servlet.http.HttpServlet.service
> (HttpServlet.java:802)
> org.jasig.cas.web.init.SafeDispatcherServlet.service(SafeDispatcherServlet.java:115)
>
> *root cause*
>
> java.lang.NullPointerException
> org.jasig.cas.CentralAuthenticationServiceImpl.grantServiceTicket(CentralAuthenticationServiceImpl.java:207)
> org.jasig.cas.CentralAuthenticationServiceImpl.grantServiceTicket
> (CentralAuthenticationServiceImpl.java:229)
> org.jasig.cas.web.flow.GenerateServiceTicketAction.doExecute(GenerateServiceTicketAction.java:37)
> org.springframework.webflow.action.AbstractAction.execute(AbstractAction.java
> :203)
> org.springframework.webflow.engine.AnnotatedAction.execute(AnnotatedAction.java:142)
> org.springframework.webflow.engine.ActionExecutor.execute(ActionExecutor.java:61)
> org.springframework.webflow.engine.ActionState.doEnter
> (ActionState.java:180)
> org.springframework.webflow.engine.State.enter(State.java:200)
> org.springframework.webflow.engine.Transition.execute(Transition.java:229)
> org.springframework.webflow.engine.DecisionState.doEnter
> (DecisionState.java:58)
> org.springframework.webflow.engine.State.enter(State.java:200)
> org.springframework.webflow.engine.Transition.execute(Transition.java:229)
> org.springframework.webflow.engine.TransitionableState.onEvent
> (TransitionableState.java:112)
> org.springframework.webflow.engine.Flow.onEvent(Flow.java:572)
> org.springframework.webflow.engine.impl.RequestControlContextImpl.signalEvent(RequestControlContextImpl.java:208)
> org.springframework.webflow.engine.ActionState.doEnter
> (ActionState.java:185)
> org.springframework.webflow.engine.State.enter(State.java:200)
> org.springframework.webflow.engine.Transition.execute(Transition.java:229)
> org.springframework.webflow.engine.TransitionableState.onEvent
> (TransitionableState.java:112)
> org.springframework.webflow.engine.Flow.onEvent(Flow.java:572)
> org.springframework.webflow.engine.impl.RequestControlContextImpl.signalEvent(RequestControlContextImpl.java:208)
> org.springframework.webflow.engine.ActionState.doEnter
> (ActionState.java:185)
> org.springframework.webflow.engine.State.enter(State.java:200)
> org.springframework.webflow.engine.Transition.execute(Transition.java:229)
> org.springframework.webflow.engine.TransitionableState.onEvent
> (TransitionableState.java:112)
> org.springframework.webflow.engine.Flow.onEvent(Flow.java:572)
> org.springframework.webflow.engine.impl.RequestControlContextImpl.signalEvent(RequestControlContextImpl.java:208)
> org.springframework.webflow.engine.ActionState.doEnter
> (ActionState.java:185)
> org.springframework.webflow.engine.State.enter(State.java:200)
> org.springframework.webflow.engine.Transition.execute(Transition.java:229)
> org.springframework.webflow.engine.TransitionableState.onEvent
> (TransitionableState.java:112)
> org.springframework.webflow.engine.Flow.onEvent(Flow.java:572)
> org.springframework.webflow.engine.impl.RequestControlContextImpl.signalEvent(RequestControlContextImpl.java:208)
> org.springframework.webflow.engine.impl.FlowExecutionImpl.signalEvent
> (FlowExecutionImpl.java:214)
> org.springframework.webflow.executor.FlowExecutorImpl.resume(FlowExecutorImpl.java:245)
> org.springframework.webflow.executor.support.FlowRequestHandler.handleFlowRequest(FlowRequestHandler.java
> :115)
> org.springframework.webflow.executor.mvc.FlowController.handleRequestInternal(FlowController.java:172)
> org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
> org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle
> (SimpleControllerHandlerAdapter.java:48)
> org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:857)
> org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:792)
>
> org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:461)
> org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:426)
> javax.servlet.http.HttpServlet.service
> (HttpServlet.java:709)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> org.jasig.cas.web.init.SafeDispatcherServlet.service(SafeDispatcherServlet.java:115)
>
> *note* *The full stack trace of the root cause is available in the Apache
> Tomcat/5.5.12 logs*
>
>
> Can you please guide me what went wrong?
>
> Thanks,
> Srikanth Balusani
>
> On 6/21/07, Scott Battaglia <scott.battaglia at gmail.com> wrote:
> >
> > Thanks, I've updated that file in Subversion.
> >
> > Which distribution were you using? The TAR or the ZIP? I'm wondering
> > which has the problem with the keys (or if both do).
> >
> > Thanks
> > -Scott
> >
> > On 6/21/07, Srikanth <cgeek4u at gmail.com> wrote:
> >
> > > Hello,
> > > I got the .key files from subversion and replaced in the distribution.
> > > Then I ran into compilation issues of one of the tests.
> > >
> > > File name for
> > > X509CertificateCredentialsToSerialNumberAndIssuerDNPrincipalResolverTests
> > > under org.jasig.cas.adaptors.x509.authentication.principal package was
> > > wrong. After changing the file name, I was able to build everything without
> > > any problem.
> > >
> > > Hope that helps.
> > >
> > > Thanks,
> > > Srikanth
> > >
> > >
> > > On 6/21/07, Scott Battaglia <scott.battaglia at gmail.com > wrote:
> > > >
> > > > As far as I know, the keys are okay. I recently ran through all of
> > > > the test cases in Bamboo and it succeeded. I've run them on both a Windows
> > > > and a Solaris machine.
> > > >
> > > > Unless something got messed up when they were archived. Have you
> > > > tried the version in Subversion?
> > > >
> > > > -Scott
> > > >
> > > > On 6/21/07, Philip Brusten < philip.brusten at cc.kuleuven.be> wrote:
> > > > >
> > > > > Don't know about any export rules :o)
> > > > >
> > > > > This is the output of
> > > > >
> > > > > TEST-org.jasig.cas.authentication.principal.GoogleAccountsServiceTests.xml
> > > > >
> > > > > <testcase time="0.015" name="testResponse">
> > > > > <error type="java.security.spec.InvalidKeySpecException"
> > > > > message="Inappropriate key specification: IOException: algid parse
> > > > > error, not a sequence">java.security.spec.Invalid
> > > > > KeySpecException: Inappropriate key specification: IOException:
> > > > > algid
> > > > > parse error, not a sequence
> > > > > at
> > > > > sun.security.provider.DSAKeyFactory.engineGeneratePublic(
> > > > > DSAKeyFactory.java:104)
> > > > > at java.security.KeyFactory.generatePublic(KeyFactory.java
> > > > > :284)
> > > > > at
> > > > > org.jasig.cas.util.PublicKeyFactoryBean.createInstance(
> > > > > PublicKeyFactoryBean.java:39)
> > > > > at
> > > > >
> > > > > org.springframework.beans.factory.config.AbstractFactoryBean.afterPropertiesSet
> > > > > (AbstractFactoryBean.java:120)
> > > > > at
> > > > >
> > > > > org.jasig.cas.authentication.principal.GoogleAccountsServiceTests.getGoogleAccountsService
> > > > > (GoogleAccountsServiceTests.java:46)
> > > > > at
> > > > >
> > > > > org.jasig.cas.authentication.principal.GoogleAccountsServiceTests.setUp(
> > > > > GoogleAccountsServiceTests.java :61)
> > > > > at junit.framework.TestCase.runBare(TestCase.java:125)
> > > > > at junit.framework.TestResult$1.protect(TestResult.java
> > > > > :106)
> > > > > at junit.framework.TestResult.runProtected(TestResult.java
> > > > > :124)
> > > > > at junit.framework.TestResult.run(TestResult.java:109)
> > > > > at junit.framework.TestCase.run(TestCase.java:118)
> > > > > at junit.framework.TestSuite.runTest(TestSuite.java:208)
> > > > > at junit.framework.TestSuite.run (TestSuite.java:203)
> > > > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> > > > > Method)
> > > > > at
> > > > > sun.reflect.NativeMethodAccessorImpl.invoke(
> > > > > NativeMethodAccessorImpl.java:39)
> > > > > at
> > > > > sun.reflect.DelegatingMethodAccessorImpl.invoke (
> > > > > DelegatingMethodAccessorImpl.java:25)
> > > > > at java.lang.reflect.Method.invoke(Method.java:585)
> > > > > at
> > > > > org.apache.maven.surefire.junit.JUnitTestSet.execute(
> > > > > JUnitTestSet.java:213)
> > > > > at
> > > > >
> > > > > org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(
> > > > > AbstractDirectoryTestSuite.java:138)
> > > > > at
> > > > > org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute
> > > > > (AbstractDirectoryTestSuite.java:125)
> > > > > at org.apache.maven.surefire.Surefire.run(Surefire.java:132)
> > > > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> > > > > Method)
> > > > > at
> > > > > sun.reflect.NativeMethodAccessorImpl.invoke(
> > > > > NativeMethodAccessorImpl.java:39)
> > > > > at
> > > > > sun.reflect.DelegatingMethodAccessorImpl.invoke (
> > > > > DelegatingMethodAccessorImpl.java:25)
> > > > > at java.lang.reflect.Method.invoke(Method.java:585)
> > > > > at
> > > > > org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess
> > > > > (SurefireBooter.java:290)
> > > > > at
> > > > > org.apache.maven.surefire.booter.SurefireBooter.main(
> > > > > SurefireBooter.java:818)
> > > > > at
> > > > > org.apache.maven.surefire.booter.SurefireBooter.main(
> > > > > SurefireBooter.java:818)
> > > > > </error>
> > > > > </testcase>
> > > > >
> > > > >
> > > > > Apparently there's a problem with the DSA keys that are loaded by
> > > > > the
> > > > > test class. Some searching on Google pointed me to the following
> > > > > URL:
> > > > >
> > > > > http://forum.java.sun.com/thread.jspa?threadID=270930&messageID=1037530
> > > > >
> > > > > The keys reside at
> > > > > cas-server-3.1-rc2
> > > > > /cas-server-core/src/test/resources/DSAPublicKey01.key
> > > > > cas-server-3.1-rc2/cas-server-core/src/test/resources/DSAPrivateKey01.key
> > > > >
> > > > > cas-server-3.1-rc2
> > > > > /cas-server-core/target/test-classes/DSAPublicKey01.key
> > > > > cas-server-3.1-rc2
> > > > > /cas-server-core/target/test-classes/DSAPrivateKey01.key
> > > > >
> > > > > Is there a problem with the format of the keys?
> > > > >
> > > > > Philip
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > Scott Battaglia wrote:
> > > > > > Are there any export rules for XML Security with regards to
> > > > > other countries?
> > > > > >
> > > > > > Also, in cas-server-core/target/surefire-reports/ there should
> > > > > be a file
> > > > > > for that class with more specific exception information. I'm
> > > > > just
> > > > > > guessing its the same error I was having before.
> > > > > >
> > > > > > -Scott
> > > > > >
> > > > > > On 6/21/07, *Philip Brusten* < philip.brusten at cc.kuleuven.be
> > > > > > <mailto: philip.brusten at cc.kuleuven.be>> wrote:
> > > > > >
> > > > > > I'm using the official java distribution of debian:
> > > > > sun-java5-jdk
> > > > > > 1.5.0-10-3
> > > > > >
> > > > > > I also tried the jdk1.5.0_12 under windows, resulting in the
> > > > > same
> > > > > > error...
> > > > > >
> > > > > > Philip
> > > > > >
> > > > > >
> > > > > >
> > > > > > Scott Battaglia wrote:
> > > > > > > Which version of the JVM are you using? Apparently older
> > > > > versions of
> > > > > > > the Java 1.5 JVM don't include the XML Security needed for
> > > > > the JSR 105
> > > > > > > support (I've had success with Java 1.5.0_11 and Java 6).
> > > > > > >
> > > > > > > If anyone knows how to switch JSR 105 providers so we are
> > > > > not
> > > > > > dependent
> > > > > > > on the JVM version, please let me know. (btw, we're only
> > > > > dependent
> > > > > > on it
> > > > > > > for the Google Accounts support and nothing else).
> > > > > > >
> > > > > > > -Scott
> > > > > > >
> > > > > > > On 6/21/07, *Philip Brusten* <
> > > > > philip.brusten at cc.kuleuven.be
> > > > > > <mailto:philip.brusten at cc.kuleuven.be >
> > > > > > > <mailto:philip.brusten at cc.kuleuven.be
> > > > > > <mailto: philip.brusten at cc.kuleuven.be >>> wrote:
> > > > > > >
> > > > > > > Scott Battaglia wrote:
> > > > > > > > Yes, there were two places it needed to be
> > > > > changed. Only
> > > > > > one of them
> > > > > > > > had been changed. It *should* be fixed when RC3
> > > > > comes out
> > > > > > (along
> > > > > > > with a
> > > > > > > > couple of other things).
> > > > > > >
> > > > > > > I changed "cas-server-support-spnego" to
> > > > > > "cas-server-support-windows" in
> > > > > > > pom.xml.
> > > > > > >
> > > > > > > When running "mvn package install pom.xml" I'm
> > > > > receiving the
> > > > > > following
> > > > > > > error:
> > > > > > >
> > > > > > >
> > > > > > > Tests in error:
> > > > > > >
> > > > > > >
> > > > > > testResponse(
> > > > > org.jasig.cas.authentication.principal.GoogleAccountsServiceTests
> > > > > > >
> > > > > > > )
> > > > > > >
> > > > > > >
> > > > > > testWithGoogleAccountsService(
> > > > > org.jasig.cas.web.flow.DynamicRedirectViewSelect
> > > > > > >
> > > > > > > orTests)
> > > > > > >
> > > > > > >
> > > > > > testNoService(
> > > > > org.jasig.cas.web.support.GoogleAccountsArgumentExtractorTests
> > > > > >
> > > > > > > )
> > > > > > >
> > > > > > >
> > > > > > > Tests run: 396, Failures: 0, Errors: 3, Skipped: 0
> > > > > > >
> > > > > > >
> > > > > > > Any idea what's causing these problems?
> > > > > > >
> > > > > > > Regards,
> > > > > > >
> > > > > > > Philip
> > > > > > >
> > > > > > > Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm
> > > > >
> > > > > > >
> > > > > > > _______________________________________________
> > > > > > > Yale CAS mailing list
> > > > > > > cas at tp.its.yale.edu <mailto: cas at tp.its.yale.edu>
> > > > > > <mailto: cas at tp.its.yale.edu <mailto:cas at tp.its.yale.edu>>
> > > > > > > http://tp.its.yale.edu/mailman/listinfo/cas
> > > > > > < http://tp.its.yale.edu/mailman/listinfo/cas >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > --
> > > > > > > -Scott Battaglia
> > > > > > >
> > > > > > > LinkedIn: http://www.linkedin.com/in/scottbattaglia
> > > > > > > < http://www.linkedin.com/in/scottbattaglia >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > >
> > > > > ------------------------------------------------------------------------
> > > > > > >
> > > > > > > _______________________________________________
> > > > > > > Yale CAS mailing list
> > > > > > > cas at tp.its.yale.edu <mailto:cas at tp.its.yale.edu>
> > > > > > > http://tp.its.yale.edu/mailman/listinfo/cas
> > > > > >
> > > > > >
> > > > > >
> > > > > > Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm
> > > > >
> > > > > >
> > > > > > _______________________________________________
> > > > > > Yale CAS mailing list
> > > > > > cas at tp.its.yale.edu <mailto: cas at tp.its.yale.edu>
> > > > > > http://tp.its.yale.edu/mailman/listinfo/cas
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > --
> > > > > > -Scott Battaglia
> > > > > >
> > > > > > LinkedIn: http://www.linkedin.com/in/scottbattaglia
> > > > > > <http://www.linkedin.com/in/scottbattaglia>
> > > > > >
> > > > > >
> > > > > >
> > > > > ------------------------------------------------------------------------
> > > > > >
> > > > > > _______________________________________________
> > > > > > Yale CAS mailing list
> > > > > > cas at tp.its.yale.edu
> > > > > > http://tp.its.yale.edu/mailman/listinfo/cas
> > > > >
> > > > >
> > > > > Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm
> > > > >
> > > > > _______________________________________________
> > > > > Yale CAS mailing list
> > > > > cas at tp.its.yale.edu
> > > > > http://tp.its.yale.edu/mailman/listinfo/cas
> > > > >
> > > >
> > > >
> > > >
> > > > --
> > > > -Scott Battaglia
> > > >
> > > > LinkedIn: http://www.linkedin.com/in/scottbattaglia
> > > >
> > > > _______________________________________________
> > > > Yale CAS mailing list
> > > > cas at tp.its.yale.edu
> > > > http://tp.its.yale.edu/mailman/listinfo/cas
> > > >
> > > >
> > >
> > > _______________________________________________
> > > Yale CAS mailing list
> > > cas at tp.its.yale.edu
> > > http://tp.its.yale.edu/mailman/listinfo/cas
> > >
> > >
> >
> >
> > --
> > -Scott Battaglia
> >
> > LinkedIn: http://www.linkedin.com/in/scottbattaglia
> >
> > _______________________________________________
> > Yale CAS mailing list
> > cas at tp.its.yale.edu
> > http://tp.its.yale.edu/mailman/listinfo/cas
> >
> >
>
> _______________________________________________
> Yale CAS mailing list
> cas at tp.its.yale.edu
> http://tp.its.yale.edu/mailman/listinfo/cas
>
>
--
-Scott Battaglia
LinkedIn: http://www.linkedin.com/in/scottbattaglia
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://tp.its.yale.edu/pipermail/cas/attachments/20070622/a9f0125f/attachment.html
More information about the cas
mailing list