CAS是一個開源的Web單點登錄(SSO)方式,是一種基于標準協議的認證方式,CAS5.2是其重要版本。在CAS5.2中,可以支持返回JSON格式的認證結果。如下:
{ "authenticated": true, "principal": "admin", "attributes": { "email": "admin@example.com", "phone": "1234567890" } }
json數據中,authenticated字段表示認證是否成功,principal字段表示認證通過的用戶標識,在這里為“admin”。而attributes字段則表示認證用戶的相關屬性信息。
返回JSON格式的認證結果,可以方便地為API提供安全認證,或在前端(如Vue.js)中進行統一認證處理。例如,可以使用axios庫通過API網關調用后端服務API時,將認證結果加入請求頭中,后端服務API再次驗證認證結果。如下:
// frontend's axios configuration axios.interceptors.request.use( config =>{ let token = localStorage.getItem('token') if (token) { config.headers.Authorization = `Bearer ${token}` } return config }, error =>{ return Promise.reject(error) } ) // some frontend API call axios.get('http://api.example.com/', { headers: { 'X-Auth': JSON.stringify({ authenticated: true, principal: 'admin', attributes: { email: 'admin@example.com' } }) } })
在這個例子里,前端請求頭中以X-Auth頭為鍵,將JSON格式的認證結果作為鍵值傳遞給后端服務API,進行后續認證授權。這樣一來,服務API就可以方便地驗證前端用戶是否登錄,認證是否通過。