But that just describes the error, it doesn't necessarily indicate how to fix the error, right?
I recall getting an error like that, and I think the fix was some mod_auth_cas configuration problem. For instance, do you have this set in your mod_auth_cas config?: CASValidateSaml On Besides that, you might not need to use Saml, you might be able to get by with the p3 service validation available in CAS 4.0. I was able to do that -- although, again, I needed to modify mod_auth_cas -- modifications which were discussed on the mod_auth_cas dev list, although I don't know whether they've been incorporated into any available version of the code yet (but they should be available on the list archives). It's also possible that your requirements -- you mention needing group based auth -- are different and the p3 validation won't be sufficient. Milt Epstein Applications Developer Graduate School of Library and Information Science (GSLIS) University of Illinois at Urbana-Champaign (UIUC) [email protected] On Thu, 12 Feb 2015, Misagh Moayyed wrote: > The message is misleading and incorrect, yes, and we should correctly > describe the error, which is: your samlValidate endpoint requires not a > service and a ticket, but a TARGET and artifactId. > > I???ll open up an issue to fix this. > > - Misagh > > > On Feb 12, 2015, at 1:44 PM, Tiit Kaeeli <[email protected]> wrote: > > > > Thanks. > > > > CAS is https://github.com/UniconLabs/simple-cas4-overlay-template master > > from 28 nov. 2014 > > > > mod_auth_cas is https://github.com/Jasig/mod_auth_cas master from 19.01.2015 > > > > > > When I use serviceValidate in curl script, the result is: > > > > <cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'> > > <cas:authenticationSuccess> > > <cas:user>kaeeli</cas:user> > > > > > > </cas:authenticationSuccess> > > * Connection #0 to host cas.quretec.com left intact > > </cas:serviceResponse> > > > > > > When turning to samlValidate, the output is > > > >> GET > > /cas/samlValidate?service=https://nagios.quretec.com/cas&ticket=ST-27-u7pHxJeireBDF1BOef0c-cas.quretec.com > > HTTP/1.1 > >> User-Agent: curl/7.26.0 > >> Host: cas.quretec.com:8443 > >> Accept: */* > >> > > * additional stuff not fine transfer.c:1037: 0 0 > > * HTTP 1.1 or later with persistent connection, pipelining supported > > < HTTP/1.1 200 OK > > < Server: Apache-Coyote/1.1 > > < Cache-control: no-cache, no-store > > < Pragma: no-cache > > < SOAPAction: http://www.oasis-open.org/committees/security > > < Content-Type: text/xml;charset=UTF-8 > > < Content-Language: en > > < Transfer-Encoding: chunked > > < Date: Thu, 12 Feb 2015 12:28:05 GMT > > < > > * Connection #0 to host cas.quretec.com left intact > > <?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope > > xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><saml1p:Response > > xmlns:saml1p="urn:oasis:names:tc:SAML:1.0:protocol" > > IssueInstant="2015-02-12T12:28:05.897Z" MajorVersion="1" MinorVersion="1" > > Recipient="UNKNOWN" > > ResponseID="_109405fffabb202dbcc8915292aaf3a9"><saml1p:Status><saml1p:StatusCode > > Value="saml1p:RequestDenied"/><saml1p:StatusMessage>'service' and 'ticket' > > parameters are both > > required</saml1p:StatusMessage></saml1p:Status></saml1p:Response></SOAP-ENV:Body></SOAP-ENV:Envelope>* > > Closing connection #0 > > * SSLv3, TLS alert, Client hello (1): > > > > Seems like something is wrong with the curl command. I tried \'\' and \"\" > > around $SERVICE and $ST, but results are always the same. > > > > curl -k -v --get --data service="$SERVICE" --data ticket="$ST" > > $SERVICE_VALIDATE > > > > > > > > > > On Wed, 11 Feb 2015, Waldbieser, Carl wrote: > > > >> > >> Can you use a command line HTTP client like cURL[1] or httpie[2] to > >> request an ST and validate it? Here is a unix shell script I use with > >> httpie to inspect CAS validation responses: > >> > >> #! /bin/sh > >> > >> CAS_LOGIN=https://cas.example.net/cas/login; > >> SERVICE_VALIDATE=https://cas.example.net/cas/serviceValidate; > >> SERVICE='https://service.example.com/login'; > >> TGT='Enter TGT here'; > >> ST=$(http -v "$CAS_LOGIN" "Cookie:CASTGC=${TGT}" service=="$SERVICE" | \ > >> grep -e ticket= | sed -e 's/^.*ticket=//' -e 's/\r//') && \ > >> http "$SERVICE_VALIDATE" service=="$SERVICE" ticket=="$ST" > >> > >> Here is a similar `curl` version: > >> > >> #! /bin/sh > >> > >> CAS_LOGIN=https://cas.example.net/cas/login; > >> SERVICE_VALIDATE=https://cas.example.net/cas/serviceValidate; > >> SERVICE='https://service.example.com/login'; > >> TGT='Enter TGT here'; > >> ST=$(curl -v --get --data service="$SERVICE" --cookie CASTGC="$TGT" > >> "$CAS_LOGIN" 2>&1 | \ > >> grep -e '^< Location:' | grep -e ticket= | sed -e 's/^.*ticket=//' > >> -e 's/\r//') && \ > >> curl -v --get --data service="$SERVICE" --data ticket="$ST" > >> "$SERVICE_VALIDATE" > >> > >> You set the variables like CAS_LOGIN, SERVICE, TGT, etc. You can get a > >> valid TGT from your CAS logs or dig it out of your browser cookies after > >> you authenticate successfully. The lines starting with `ST=` request an > >> ST and validate it. The response is spit out to the console so you can > >> see what the response looks like. Hopefully, that will help you figure > >> out why mod_auth_cas doesn't like the XML it is getting back. > >> > >> Thanks, > >> Carl > >> > >> [1] http://curl.haxx.se/ > >> [2] https://github.com/jakubroztocil/httpie > >> > >> ----- Original Message ----- > >> From: "Tiit Kaeeli" <[email protected]> > >> To: [email protected] > >> Sent: Wednesday, February 11, 2015 11:50:32 AM > >> Subject: Re: [cas-user] <ServiceTicket [...] does not exist.> after > >> <Removing ticket [...] from registry> > >> > >> mod_auth_cas log of the first try. Fails with > >> > >> MOD_AUTH_CAS: Error parsing XML content (Internal error) > >> > >> > >> > >> > >> [Wed Feb 11 18:40:02 2015] [debug] mod_auth_cas.c(2026): [client > >> 192.168.8.218] Entering cas_authenticate() > >> [Wed Feb 11 18:40:02 2015] [debug] mod_auth_cas.c(645): [client > >> 192.168.8.218] Modified r->args (now '') > >> [Wed Feb 11 18:40:02 2015] [debug] mod_auth_cas.c(1729): [client > >> 192.168.8.218] entering getResponseFromServer() > >> [Wed Feb 11 18:40:02 2015] [debug] mod_auth_cas.c(575): [client > >> 192.168.8.218] CAS Service 'https%3a%2f%2fnagios.quretec.com%2fcas' > >> [Wed Feb 11 18:40:02 2015] [debug] mod_auth_cas.c(1806): [client > >> 192.168.8.218] Validation response: <?xml version="1.0" > >> encoding="UTF-8"?><SOAP-ENV:Envelope > >> > >> xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><saml1p:Response > >> xmlns:saml1p="urn:oasis:names:tc:SAML:1.0:protocol" IssueInstant= > >> "2015-02-11T16:40:02.454Z" MajorVersion="1" MinorVersion="1" > >> Recipient="https://nagios.quretec.com/cas" > >> ResponseID="_e4cafa37cb4c77fe55aae7c0d482e40e"><saml1 > >> p:Status><saml1p:StatusCode > >> Value="saml1p:Success"/></saml1p:Status><saml1:Assertion > >> xmlns:saml1="urn:oasis:names:tc:SAML:1.0:assertion" AssertionID="_2121b0 > >> 19c9fedf9b287bb811280e227c" IssueInstant="2015-02-11T16:40:02.454Z" > >> Issuer="localhost" MajorVersion="1" MinorVersion="1"><saml1:Conditions > >> NotBefore="2015-02 > >> -11T16:40:02.454Z" > >> NotOnOrAfter="2015-02-11T16:40:32.454Z"><saml1:AudienceRestrictionCondition><saml1:Audience>https://nagios.quretec.com/cas</saml1:Audience > >>> </saml1:AudienceRestrictionCondition></saml1:Conditions><saml1:AuthenticationStatement > >> AuthenticationInstant="2015-02-11T15:07:56.192Z" AuthenticationMethod > >> ="urn:oasis:names:tc:SAML:1.0:am:unspecified"><saml1:Subject><saml1:NameIdentifier>kaeeli</saml1:NameIdentifier><saml1:SubjectConfirmation><saml1:Confirmatio > >> nMethod>urn:oasis:names:tc:SAML:1.0:cm:artifact</saml1:ConfirmationMethod></saml1:SubjectConfirmation></saml1:Subject></saml1:AuthenticationStatement></saml1 > >> :Assertion></saml1p:Response></SOAP-ENV:Body></SOAP-ENV:Envelope> > >> [Wed Feb 11 18:40:02 2015] [debug] mod_auth_cas.c(1434): [client > >> 192.168.8.218] entering isValidCASTicket() > >> [Wed Feb 11 18:40:02 2015] [debug] mod_auth_cas.c(1440): [client > >> 192.168.8.218] MOD_AUTH_CAS: response = <?xml version="1.0" > >> encoding="UTF-8"?><SOAP-ENV:Enve > >> lope > >> xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><saml1p:Response > >> xmlns:saml1p="urn:oasis:names:tc:SAML:1.0:protocol" IssueInst > >> ant="2015-02-11T16:40:02.454Z" MajorVersion="1" MinorVersion="1" > >> Recipient="https://nagios.quretec.com/cas" > >> ResponseID="_e4cafa37cb4c77fe55aae7c0d482e40e"><s > >> aml1p:Status><saml1p:StatusCode > >> Value="saml1p:Success"/></saml1p:Status><saml1:Assertion > >> xmlns:saml1="urn:oasis:names:tc:SAML:1.0:assertion" AssertionID="_21 > >> 21b019c9fedf9b287bb811280e227c" IssueInstant="2015-02-11T16:40:02.454Z" > >> Issuer="localhost" MajorVersion="1" MinorVersion="1"><saml1:Conditions > >> NotBefore="201 > >> 5-02-11T16:40:02.454Z" > >> NotOnOrAfter="2015-02-11T16:40:32.454Z"><saml1:AudienceRestrictionCondition><saml1:Audience>https://nagios.quretec.com/cas</saml1:Audi > >> ence></saml1:AudienceRestrictionCondition></saml1:Conditions><saml1:AuthenticationStatement > >> AuthenticationInstant="2015-02-11T15:07:56.192Z" AuthenticationMe > >> thod="urn:oasis:names:tc:SAML:1.0:am:unspecified"><saml1:Subject><saml1:NameIdentifier>kaeeli</saml1:NameIdentifier><saml1:SubjectConfirmation><saml1:Confirm > >> ationMethod>urn:oasis:names:tc:SAML:1.0:cm:artifact</saml1:ConfirmationMethod></saml1:SubjectConfirmation></saml1:Subject></saml1:AuthenticationStatement></s > >> aml1:Assertion></saml1p:Response></SOAP-ENV:Body></SOAP-ENV:Envelope> > >> [Wed Feb 11 18:40:02 2015] [debug] mod_auth_cas.c(1266): [client > >> 192.168.8.218] entering createCASCookie() > >> [Wed Feb 11 18:40:02 2015] [debug] mod_auth_cas.c(1061): [client > >> 192.168.8.218] entering CASCleanCache() > >> [Wed Feb 11 18:40:02 2015] [debug] mod_auth_cas.c(1117): [client > >> 192.168.8.218] Beginning cache clean > >> [Wed Feb 11 18:40:02 2015] [debug] mod_auth_cas.c(1140): [client > >> 192.168.8.218] Processing cache file 'd76eaa64b28d6adf641e9d8fe59e39bb' > >> [Wed Feb 11 18:40:02 2015] [debug] mod_auth_cas.c(890): [client > >> 192.168.8.218] entering readCASCacheFile() > >> [Wed Feb 11 18:40:02 2015] [error] [client 192.168.8.218] MOD_AUTH_CAS: > >> Error parsing XML content (Internal error) > >> [Wed Feb 11 18:40:02 2015] [debug] mod_auth_cas.c(1156): [client > >> 192.168.8.218] Removing corrupt cache entry > >> 'd76eaa64b28d6adf641e9d8fe59e39bb' > >> [Wed Feb 11 18:40:02 2015] [debug] mod_auth_cas.c(1406): [client > >> 192.168.8.218] entering deleteCASCacheFile() > >> [Wed Feb 11 18:40:02 2015] [debug] mod_auth_cas.c(890): [client > >> 192.168.8.218] entering readCASCacheFile() > >> [Wed Feb 11 18:40:02 2015] [error] [client 192.168.8.218] MOD_AUTH_CAS: > >> Error parsing XML content (Internal error) > >> [Wed Feb 11 18:40:02 2015] [debug] mod_auth_cas.c(1178): [client > >> 192.168.8.218] entering writeCASCacheEntry() > >> > >> > >> > >> > >>> > >>> Yes. > >>> The service ticket can only be used once. > >>> Once a service validates the service ticket, it ought to establish some > >>> kind of local application specific session. > >>> The fact that the ticket is being validated twice suggests that maybe the > >>> client is configured incorrectly. > >>> > >>> Thanks, > >>> Carl Waldbieser > >>> ITS System Programmer > >>> Lafayette College > >>> > >>> ----- Original Message ----- > >>> From: "Tiit Kaeeli" <[email protected]> > >>> To: [email protected] > >>> Sent: Wednesday, February 11, 2015 8:10:56 AM > >>> Subject: [cas-user] <ServiceTicket [...] does not exist.> after <Removing > >>> ticket [...] from registry> > >>> > >>> Hi, > >>> > >>> I got mod_auth_cas working without SAML. Now I am trying to enable SAML > >>> for LDAP group based auth. But unfortunately apache returns 401. So I am > >>> in need for help again. > >>> > >>> In tomcat logs, there are no errors, but final result is > >>> > >>> WHAT: ST-1-V6yYyU7eDUu1zqqh4gGm-cas.quretec.com > >>> ACTION: SERVICE_TICKET_VALIDATE_FAILED > >>> > >>> > >>> > >>> Before this I see: > >>> > >>> 2015-02-11 14:38:16,202 DEBUG > >>> [org.jasig.cas.ticket.registry.DefaultTicketRegistry] - <Attempting to > >>> retrieve ticket [ST-1-V6yYyU7eDUu1zqqh4gGm-cas.quretec.com]> > >>> 2015-02-11 14:38:16,202 DEBUG > >>> [org.jasig.cas.ticket.registry.DefaultTicketRegistry] - <Ticket > >>> [ST-1-V6yYyU7eDUu1zqqh4gGm-cas.quretec.com] found in registry.> > >>> 2015-02-11 14:38:16,202 DEBUG > >>> [org.jasig.cas.CentralAuthenticationServiceImpl] - <Principal id to return > >>> for service [HTTP and IMAP] is [kaeeli]. The default principal id is > >>> [kaeeli].> > >>> 2015-02-11 14:38:16,202 DEBUG > >>> [org.jasig.cas.ticket.registry.DefaultTicketRegistry] - <Removing ticket > >>> [ST-1-V6yYyU7eDUu1zqqh4gGm-cas.quretec.com] from registry> > >>> 2015-02-11 14:38:16,202 DEBUG > >>> [org.jasig.cas.ticket.registry.DefaultTicketRegistry] - <Attempting to > >>> retrieve ticket [ST-1-V6yYyU7eDUu1zqqh4gGm-cas.quretec.com]> > >>> 2015-02-11 14:38:16,202 INFO > >>> [com.github.inspektr.audit.support.Slf4jLoggingAuditTrailManager] - <Audit > >>> trail record BEGIN > >>> ============================================================= > >>> WHO: audit:unknown > >>> WHAT: ST-1-V6yYyU7eDUu1zqqh4gGm-cas.quretec.com > >>> ACTION: SERVICE_TICKET_VALIDATED > >>> APPLICATION: CAS > >>> WHEN: Wed Feb 11 14:38:16 EET 2015 > >>> CLIENT IP ADDRESS: 192.168.7.108 > >>> SERVER IP ADDRESS: 192.168.7.183 > >>> ============================================================= > >>> > >>> > >>> ... > >>> > >>> 2015-02-11 14:38:16,562 DEBUG > >>> [org.jasig.cas.ticket.registry.DefaultTicketRegistry] - <Attempting to > >>> retrieve ticket [ST-1-V6yYyU7eDUu1zqqh4gGm-cas.quretec.com]> > >>> 2015-02-11 14:38:16,562 INFO > >>> [org.jasig.cas.CentralAuthenticationServiceImpl] - <ServiceTicket > >>> [ST-1-V6yYyU7eDUu1zqqh4gGm-cas.quretec.com] does not exist.> > >>> 2015-02-11 14:38:16,566 DEBUG > >>> [org.jasig.cas.ticket.registry.DefaultTicketRegistry] - <Attempting to > >>> retrieve ticket [ST-1-V6yYyU7eDUu1zqqh4gGm-cas.quretec.com]> > >>> 2015-02-11 14:38:16,566 INFO > >>> [com.github.inspektr.audit.support.Slf4jLoggingAuditTrailManager] - <Audit > >>> trail record BEGIN > >>> ============================================================= > >>> WHO: audit:unknown > >>> WHAT: ST-1-V6yYyU7eDUu1zqqh4gGm-cas.quretec.com > >>> ACTION: SERVICE_TICKET_VALIDATE_FAILED > >>> APPLICATION: CAS > >>> WHEN: Wed Feb 11 14:38:16 EET 2015 > >>> CLIENT IP ADDRESS: 192.168.7.108 > >>> SERVER IP ADDRESS: 192.168.7.183 > >>> ============================================================= > >>> > >>> > >>> > >>> > >>> It seems, that service ticket is looked for twice, first time it succeeds. > >>> Then the ticket is removed from the registry. The other attemp after that > >>> fails. > >>> > >>> Is this normal and expected behaviour? > >>> > >>> > >>> > >>> > >> > >> > >> > > > > > > -- > > You are currently subscribed to [email protected] as: > > [email protected] > > To unsubscribe, change settings or access archives, see > > http://www.ja-sig.org/wiki/display/JSG/cas-user > > > -- > You are currently subscribed to [email protected] as: > [email protected] > To unsubscribe, change settings or access archives, see > http://www.ja-sig.org/wiki/display/JSG/cas-user > > -- You are currently subscribed to [email protected] as: [email protected] To unsubscribe, change settings or access archives, see http://www.ja-sig.org/wiki/display/JSG/cas-user
