系統組件
CAS服務器與客戶端組成CAS系統架構的兩大部分,二者之間經過各類協議進行通信(CAS、SAML、OAuth)php
- CAS服務器 是基於Spring Framework的Java Servlet,負責用戶認證與客戶端接入過程的憑證簽發與驗證。用戶登陸成功後,服務器會建立一個SSO會話並簽發TGT(ticket-granting ticket:簽名憑證)。當用戶請求經過瀏覽器重定向發送到服務器時,客戶端提交TGT做爲令牌,服務器將再簽發一個ST(service ticket:服務憑證)。這個ST接下來會用於與服務器的後端通訊驗證。這些交互的詳細細節可參見CAS協議文檔。
- CAS客戶端 CAS客戶端在術語層面一般有兩層意思。一是指任一啓用了CAS並可與服務器之間按支持的協議通信的應用。另外一是指爲了與服務器進行通信,而被集成進各類軟件平臺和應用的軟件包。CAS客戶端支持以下各類平臺與產品: 平臺:
- Apache httpd Server (mod_auth_cas module)
- Java (Java CAS Client)
- .NET(.NET CAS Client)
- PHP (PHP CAS)
- Perl(PerlCAS)
- Python (pycas)
- Ruby (rubycas-client) 應用:
- Outlook Web應用 (ClearPass + .NET CAS Client)
- Atlassian Confluence
- Atlassian JIRA
- Drupal
- Liferay
- uPortal 在本文檔中,若是沒有特別指明"CAS客戶端"時,它是指集成組件,好比Jasig Java CAS Client,而不是置於CAS服務器之上的應用。
協議
客戶端與服務器之間可使用任一支持的協議進行通信。這些協議在概念上是相似的,只是有一些協議爲了知足特定的應用與案例增長了一些特性或特色。例如,CAS協議支持代理認證,SAML協議支持屬性發布和單點登出。 支持的協議:html
軟件組件
爲了便於理解,能夠將CAS服務端分爲三層子系統來進行描述:git
幾乎全部的部署考慮和組件配置都包含在這三層子系統中。WEb層是與全部外部系統包括CAS客戶端進行通訊的端點。WEB層代理Ticketing子系統爲客戶端接入生成憑證。SSO會話開始於成功認證以後TGT簽名憑證的簽發,由此也能夠看出憑證子系統是認證子系統的代理。github
認證系統通常只在SSO會話開始以後才處理請求,儘管也有一些狀況下它也能被觸發,好比強制認證。後端