3.6. /proxyValidate [CAS 2.0]
/proxyValidate必须执行与/serviceValidate相同的验证任务,并且还要验证PT。/proxyValidate必须能够验证ST和PT。
3.6.1. parameters
/proxyValidate与/serviceValidate所使用的参数完全相同,请参见2.5.1。
3.6.2. response
/proxyValidate能够返回一个格式化的CAS服务响应XML,此XML的结构参见附录一。
On ticket validation success:
<cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>
<cas:authenticationSuccess>
<cas:user>username</cas:user>
<cas:proxyGrantingTicket>
PGTIOU-84678-8a9d...
</cas:proxyGrantingTicket>
<cas:proxies>
<cas:proxy>https://proxy2/pgtUrl</cas:proxy>
<cas:proxy>https://proxy1/pgtUrl</cas:proxy>
</cas:proxies>
</cas:authenticationSuccess>
</cas:serviceResponse>
请注意,当认证已开始通过多重代理进行时,一组代理的顺序要反映在<cas:proxies>块中。最近访问代理必须首先出现在代理链上,然后按照代理的新旧顺序依次添加到代理链上。在上面的例子中,服务确定的第一个访问代理的网址是:https://proxy1/pgtUrl,并且服务的代理认证是依靠第二个URL-https://proxy2/pgtUrl辨别出来的。
注:代理链<cas:proxies>里面放的是一组代理,是指获取PT的路径。它的顺序代表着同被代理者的远近关系,同被代理者更近的代理者出现在更前面。
On ticket validation failure:
<cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>
<cas:authenticationFailure code="INVALID_TICKET">
ticket PT-1856376-1HMgO86Z2ZKeByc5XdYD not recognized
</cas:authenticationFailure>
</cas:serviceResponse>
3.6.3 URL examples of /proxyValidate
/proxyValidate与/serviceValidate一样接受相同的参数。参阅第2.5.5使用范例。
3.7. /proxy [CAS 2.0]
/proxy提供到服务的PT,并且这个服务是获取了PGT的,并且可以为后端服务做代理认证。
3.7.1. parameters
下面的HTTP请求的参数是/proxy必须指定的。他们都区分大小写。
• pgt [需要] –代理服务在验证ST和PT后所获取的PGT。
• targetService [需要] -后端服务的标识符。请注意,并非所有的后端服务都是web服务,因此这一标识符不会永远是URL。但是不管怎样,这里指定的服务标识符必须匹配访问/proxyValidate时的“service”参数。
3.7.2. response
/proxy能够返回一个格式化的CAS服务响应XML,此XML的结构参见附录一。
On request success:
<cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>
<cas:proxySuccess>
<cas:proxyTicket>
PT-1856392-b98xZrQN4p90ASrw96c8
</cas:proxyTicket>
</cas:proxySuccess>
</cas:serviceResponse>
On request failure:
<cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>
<cas:proxyFailure code="INVALID_REQUEST">
'pgt' and 'targetService' parameters are both required
</cas:proxyFailure>
</cas:serviceResponse>
3.7.3. error codes
下面的值可能被用来作为验证失败时“code”属性的值。以下是最低限度的错误代码,所有CAS服务器必须实现的,当然还包括其他一些实现。
• INVALID_REQUEST -请求参数不全。上面讲到至少必须有“service”和“ticket”两个参数。
• BAD_PGT -提供的PGT无效。
• INTERNAL_ERROR –在ticket验证时发生内部错误。
对于所有的错误代码,CAS推荐为<cas:authenticationFailure>提供更详细的描述信息。
3.7.4. URL example of /proxy
Simple proxy request:
https://server/cas/proxy?targetService=http%3A%2F%2Fwww.service.com&pgt=PGT-490649-W81Y9Sa2vTM7hda7xNTkezTbVge4CUsybAr...