iT邦幫忙

2023 iThome 鐵人賽

DAY 6
0
Software Development

軟體架構備忘錄系列 第 6

Day 6 資訊安全 - 認證 (知識點023~028)

  • 分享至 

  • xImage
  •  

Authentication (認證) 與 Authorization (授權) 是兩個常被混淆的觀念。Authentication (認證)是確認你是誰,而Authorization (授權) 是確認你可以做甚麼
而對於認證的重要知識點包含:MFA、OAuth、JWT、OTP、AD認證、SSO

MFA

描述

MFA(Multi factor authentication,多因子認證) 是指除了帳號密碼之外,也需要完成其他的認證方式。以因避免帳號密碼洩漏等單一風險造成攻擊者成功登入系統。

常見MFA認證方式

  • 手機認證碼:需於用戶事先認證的手機號碼收取認證碼以驗證使用者身分
  • Email認證碼:需於用戶事先認證的電子信箱收取認證碼以驗證使用者身分
  • 身分憑證晶片卡:需插入個人晶片識別證,如:自然人憑證、健保卡等資訊
  • 個人身體特徵:例如驗證指紋、視網膜、聲音

優點

  • 同時需要使用多個認證方式,才能夠通過使用者驗證。這有助於緩解密碼洩漏等安全性風險。

缺點

  • 用戶體驗較差:由於需要通過多種驗證方式才能夠通過驗證,因此使用者的體驗會較差。
    為了平衡安全性,可以採用簡化使用者操作的驗證方式,例如Passwordless的方式,Passwordless可採用手機裝置共同驗證,或是指紋等無須密碼的方式來確認使用者的身分。或是採用Conditional access的方式,動態判斷使用者當下的位置與行為。若有較高身分疑慮,則需要通過更多的驗證。

OAuth 2.0

描述

OAuth 2.0 (Open Authorization) 是一個開放性的認證協議,資源提供者可使用此一標準委由認證提供者進行客戶端的身分認證。客戶端完成身分認證後,認證提供者發給Access Token。其記錄該使用者的身分與可存取的Scope。Access Token到期後,可更新token而無須重新進行身分認證流程。

OAuth 2.0 流程中的三個角色

  • 資源提供者:提供資源給客戶存取,希望確保該客戶端的身分正確
  • 客戶端:希望存取資源提供者所提供的資源,需要由授權提供者進行身分認證
  • 授權提供者:提供身分授權的服務單位

授權流程

  1. 客戶端向資源提供者請求資源
  2. 資源提供者判斷客戶端無權限資料,請客戶端重新導向到授權提供者。
  3. 客戶端向授權提供者完成身分認證,授權提供者發給以其私鑰簽署的Access Token
  4. 客戶端拿著Access Token向資源提供者請求資源
  5. 若該Access Token與公鑰吻合,且效期與內容無誤。則資源提供者允許客戶端存取資源。

JWT

描述

JWT (Json Web Token) 是一種授權令牌格式,其核心觀念將授權資訊與簽章內容以一個開放的標準共同存放,讓這個授權資訊易於交換。由於JWT同時紀錄認證與授權資訊,因此伺服器端無須存放使用者的認證狀態資料,而達到無狀態 (Stateless) 的身分認證。

優點:

  • 無狀態:JWT本身即包含授權資訊與簽章內容,伺服器不需要存放額外資訊,提高伺服器容錯與伸縮性
  • 安全性高:JWT包含簽章資訊,防止資料被竄改
  • 跨域使用:將JWT放入HTTP Header的Authorization之中,即可跨domain進行身分認證
  • 跨平台使用:JSON標準格式,各環境都易於產生與驗證
  • 可擴展:JWT可放置自定義屬性,提供更多授權資訊

OTP

描述

OTP (One time password,一次性密碼) 為一種特殊的密碼機制。當用戶端想要使用系統時,於通過身分認證後,取得一次性的密碼。該密碼在使用後或到期後隨即註銷,以避免密碼外洩的風險。

生成機制

  • 時間同步OTP:於個人裝置(例如手機) 上安裝密鑰,並使用此密鑰搭配目前時間計算特定的OTP,時間過後即失效。
  • 郵件、簡訊OTP:系統發送認證碼到電子信箱或手機簡訊,以作為MFA的一部分進行身分認證。

優點

  • 安全性:密碼僅供一次性使用,避免密碼外洩的風險。
  • 快速部屬:不需要安裝複雜的認證基礎設施,即可完成身分認證。

缺點

  • 用戶體驗較差:在完成身分認證後,仍然需要再次輸入此OTP。

AD認證

描述

AD (Active Directory) 是微軟提供的身分認證服務。由於企業內部大多使用整合AD認證登入的Windows作業系統,因此AD Server中,皆已存在各使用者的身分資料。若整合AD認證登入,可減少使用者需要額外記憶帳號密碼。

使用情境

  • 企業內部系統登入:由於企業內部用戶之資訊皆已存在於AD中,因此內部系統可整合AD進行登入。
  • 企業資料夾與資源管理:可使用AD認證管理公檔資料夾等權限之控管

優點

  • 可SSO登入:可整合kerberos等認證機制,達到企業內部系統SSO登入
  • 減少管理成本:減少管理額外身分資料與認證資訊之管理成本
  • 與微軟相關產品整合性高:由於AD認證是微軟的產品,因此其他微軟產品大多預設支援AD認證登入。
  • 可整合Azure AD認證:可透過Azure AD將地端的AD資訊同步至雲端平台使用
  • 支援多種認證協議:例如可支援LDAP、kerberos、OAuth、SAML等協議,便於與其他應用程式整合

缺點

  • 不適用於一般客戶:由於AD認證通常搭配Windows登入,因此不適合使用此方式讓一般客戶登入使用外部網站
  • 複雜性:維護大型企業的AD資訊可能需要較高成本

SSO

描述

SSO (Single Sign-On,單一登入) 是一種身分認證方案。當使用者於其他平台登入後,透過安全的身分資料交換與認證服務,信任其他平台所提供的身分認證資料。

使用情境

  • 企業內部登入:整合AD認證,讓內部已登入Windows的用戶可直接使用內部網站
  • 一般網站登入:整合Google、微軟、Facebook等認證服務提供者,通過OAuth2等方式進行SSO

優點

  • 使用者便利:使用者減少需要記憶帳號密碼需求
  • 快速登入與使用:使用者無需額外申請帳號,可快速登入使用網站服務
  • 減少重複登入:使用者登入一次,即可使用多個服務
  • 減少管理成本:無須管理多平台的身分認證資料
  • 減少建置成本:無需自行建置身分認證資料,這通常需要考慮多種安全性議題

區點

  • 單點故障風險:若SSO機制故障,相關服務皆無法使用
  • 單點資安風險:若SSO的認證機制被破解,相關服務皆暴露於被非法使用者攻擊之風險

上一篇
Day 5 資訊安全 - 通用概念 (知識點018~022)
下一篇
Day 7 資訊安全 - 授權 (知識點029~033)
系列文
軟體架構備忘錄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言