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

Reply via email to