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...