CAS(Central Authentication Service)是一套企業級單點登錄解決方案。它提供了一個中心化的認證服務,在多個應用中完成用戶的身份鑒別和授權,簡化了用戶的登錄過程。而JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,易于閱讀和編寫,常用于Web服務的數據傳輸。
CAS單點登錄中的JSON數據格式是使用JSON Web Token(JWT)實現的。它將用戶的登錄認證信息加密后作為 token 發送給應用,應用收到 token 后可以根據其中的數據判斷用戶是否通過認證。以下是一個CAS單點登錄中的JSON數據示例:
{ "exp": 1627581446, // token 過期時間 "sub": "user123", // 用戶標識 "iat": 1627495046, // token 發布時間 "iss": "https://cas.example.com", // token 發布者 "aud": "https://app.example.com", // token 接收者 "roles": ["admin", "user"] // 用戶角色列表 }
其中,最重要的是 sub 字段,它代表用戶的標識,在應用中可以根據這個標識來識別用戶,并進行訪問授權。而 roles 字段則是用來描述用戶在應用中的角色,可以根據用戶的角色來動態控制訪問權限。
在使用CAS單點登錄時,應用需要對 JSON Web Token 進行解碼,以獲取其中的用戶信息。以下是一個解碼 JSON Web Token 的示例:
import jwt from 'jsonwebtoken'; const token = '...'; // 從請求頭或者其他地方獲取 token const secretKey = '...'; // 與 CAS 中心認證服務約定的密鑰 const decoded = jwt.verify(token, secretKey); console.log(decoded.sub); // 輸出用戶標識 console.log(decoded.roles); // 輸出用戶角色列表
以上示例使用了 Node.js 中的 jwt 庫,它提供了方便的 JSON Web Token 解碼工具。在解碼之前,需要提供一個與 CAS 中心認證服務約定的密鑰,以確保 token 的有效性。解碼后,就可以獲取用戶的標識和角色等信息,進行相應的業務邏輯處理。