天天看點

JASIG CAS協定介紹 (4)- /proxyValidate 和 /proxy

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