單點登入(SSO)
Single Sign On 單點登入
Authentication - 認證
用於認可訪問哪些系統,鑑別是否為合法用戶。
Authorization Server/Identity Provider (IDP) - 負責認證的服務。
Resource Server/ Service Provider (SP) - 負責提供資源 (API呼叫) 的服務。
通常兩者皆為同一個服務。
Authorization - 授權
用於規範使用者權限的規則,規定哪些能做、哪些不能。
Token - 訪問依據
Bearer Token
短時間(一般一小時左右),客戶端向 SP 取資源時的方式,
可以放在以下位置:
HTTP Header 或 Request Body,但必須符合以下規範:
Header 要有: Content-Type: application/x-www-form-urlencoded。
Body 格式必須符合同上 Header 規範,必須是 ASCII chars 內容,且只有part。
不可以是GET,必須是一種有使用 Request Body 的 Method。
傳遞時可額外放 realm、scope、error 讓server 驗證是否合法。
Access Token
負責請求資源,短時間,時間愈短、被攻擊的可能性越低。
一但過期,就必須使用 Refresh Token 重新請求。
Refresh Token
負責身份驗證,長時間,主要在 Access Token 過期時作為重新換發所使用。
一但過期,則必須重新認證。
Token 類型
JWT Token
基於 JSON 的開放標準 (RFC-7519),且利於數據結構的傳輸。
確保數據的完整性,缺乏安全性,主要不是為了隱藏或保密資訊。
主要組成
Header
typ:聲明類型。
alg:加密方法 HMAC、SHA、RSA 等等,並進行 base64 編碼。
Payload - 聲明內容,存放訊息的地方。
官方提供幾種:
定義聲明(Claims): Registered、Public、Private。
幾種聲明參數,不強制使用,如: iss、sub、and... etc.。
Signature - 要創建簽名,是由三部分 Header、payload、secret 組成。
Ex :
基於 Token 與 Session 登入的不同
基於 Token
基於 Session
參考資料
Last updated
Was this helpful?