At our institution, our web development team was having an issue getting a 
Drupal site to use CAS's proxy ticket capabilities.  The issue was that the 
Drupal CAS module (which I believe uses PHPCAS) uses the current URL as the 
basis for the pgtURL parameter sent to the CAS server during the handshaking 
used to obtain a PGT.  The proxied service (Zimbra) is using the java 
cas-client-core.  The 'allowedProxyChains' setting in the cas-client-core seems 
to only accept exact string matches.  The Drupal site could generate a pgtURL 
from *any* valid URL on the site, though, so it seemed as though we might end 
up having to add thousands of entries.

In our development environment, I pulled the latest java-cas-client source from 
github and changed the ProxyList `contains()` method so it parses the URLs and 
matches on [protocol, host, port] and I provide a default port of 443 if none 
is specified.  This seems to be working with the URL matching behavior we 
expect.

I did have a couple concerns though:
1) Is there some reason string matching was used rather than URL matching?  Was 
it just easier to implement, or is there something I am missing?  E.g. are 
opaque strings useful as proxy identifiers in some context of which I am not 
aware?
2) Assuming URL matching is a good thing, is there some reason that the 
remainder of the URL should be considered?  I suppose it is possible you could 
have 2 distinct services running on the same vhost, and one could be allowed to 
proxy and the other not, but are real services deployed that way in practice?

Any thoughts you had would be appreciated.

Thanks,
Carl Waldbieser
ITS System Programmer
Lafayette College
-- 
You are currently subscribed to cas-dev@lists.jasig.org as: 
arch...@mail-archive.com
To unsubscribe, change settings or access archives, see 
http://www.ja-sig.org/wiki/display/JSG/cas-dev

Reply via email to