Skip to main content
新一代身份驗證機制   - Windows Card Space 曹祖聖 台灣微軟資深講師 [email_address] http://teacher.allok.com.tw MCP, MCP+I, MCSA, MCSE,MCDBA, MCAD, MCSD, MCT, MVP
大綱 Web  應用程式身份驗證所面臨的問題 過去的身份驗證機制 什麼是  CardSpace ? CardSpace  的運作機制 各種應用方式 登入頁面的改變
大綱 Web  應用程式身份驗證所面臨的問題 過去的身份驗證機制 什麼是  CardSpace ? CardSpace  的運作機制 各種應用方式 登入頁面的改變
身份識別上面臨的問題 Internet  太危險了  ! 小偷、身份偽造、釣魚網站 … username + password  的保護太弱 企業面臨管理大量身份識別資料的問題 www.antiphishing.org 22%  不購買 25%  不瀏覽
我們需要什麼  ? 任何人在任何地點都可以使用 讓使用者可以  100%  控管自己的身份資料    移除系統之間身份識別障礙 簡單、一致、安全的身份識別系統
大綱 Web  應用程式身份驗證所面臨的問題 過去的身份驗證機制 什麼是  CardSpace ? CardSpace  的運作機制 各種應用方式 登入頁面的改變
IIS 7.0  存取控制 檢查來源  IP 檢查使用者 檢查伺服器存取權限 檢查共用權限  ( 如果 是  UNC  路徑 ) 檢查  NTFS  權限
身份驗證介紹 IIS  中的身份驗證 要求進入  IIS IIS  將要求轉送到匿名  provider:  IIS  建立路徑   (w3svc/1/root)  並且檢查匿名證是否有啓用 是 :  提供路徑與   Anon.users token  給   authorization manager 否 :  IIS  將路徑交給其它每一個  provider ,檢查該路徑是否啓用該  provider  提供的驗證 每一個有啓用的  provider  檢查查使用者身份 之後,會回傳適當的表頭給  IIS 匿名 基本 摘要 Kerberos NTLM Server Core
IIS 7.0  身份驗證流程 NTLM Basic Anonymous IIS Server Core Kerberos Digest Request received by IIS Authentication Providers Passport
Client IIS  伺服器 default.htm Web  瀏覽器 匿名驗證流程
匿名驗證帳號 匿名帳號 : IUSR_[ 電腦名稱 ] IIS  安裝時建立,並加入  Guests  系統群組 請注意套用到  Guests  的自訂原則 預設狀況下, IUSR  帳號被授予所有資料夾的讀取權限 IUSR  帳號也使用在  FTP  伺服器的匿名驗證上 IIS Sub-authentication 避免密碼同步的問題
基本驗證流程 IIS  伺服器 default.htm Web  瀏覽器 Base64  編碼的 使用者名稱和密碼 401 Error
基本驗證 使用  Base64  編碼來傳送密碼 優點 RFC  相容   (RFC 2617) 支援透過  Web Proxy 瀏覽器支援廣泛 如果配合  SSL ,是很好的驗證方式 缺點 使用者需要輸入  Windows  帳號 密碼直接傳送,如果沒有  SSL  配合,非常不安全
整合式  Windows  驗證 Negotiate Kerberos NTLM  也可以只用  NTLM ,但不能只用  Kerberos 兩者都不支援  Web Proxy 要求 首先試試 接下來再試
整合式  Windows  驗證 MetaBase  屬性 :  AuthNTLM 如果同時啓用基本驗證和 整合式  Windows  驗證, Internet Explorer  會使用 整合式  Windows  驗證 NTAuthenticationProviders  屬性 : Negotiate,NTLM NTLM NTAuthenticationProviders  沒有任何管理介面,必須使用  adsutil.vbs  工具或  Metabase Explorer  來修改
NTLM  的行為 連線導向 每個要求永遠使用相同連線 必須啓動  HTTP Keep-Alives  功能 驗證對話方塊 NTLM,  預設不會顯示 如果原本要求傳回  401.1  錯誤,則會顯示對話方塊 NTLM  如何使用  Domain \ Username \ Password Domain  和   Username  永遠會在  client  與  server  之間分享 Password  則不會,會使用密碼的雜湊碼 驗證標頭中會包含 : Domain \ Username \ HashedPassword
NTLM  的安全性 駭客無法透過封包擷取,來得知密碼的雜湊演算法 如果連線斷掉、被修改  ( 透過  Web Proxy) ,那麼  NTLM  就會失敗 NTLM  版本 Lan Manager – Windows 95 NTLM v1 – NT 4.0 NTLM v2 – Windows 2000 / 2003
NTLM  的驗證過程 Get /Default.HTM Get /Default.HTM w/ AuthNTLM Get /Default.HTM w/ AuthNTLM Hashed 401 – WWW Auth:  NTLM 200 - OK 401 – Access Denied Client Client IIS Server IIS Server
Kerberos 為什麼要另外建立出一個驗證協定 NTLM  的限制 NTLM Tokens  無法被委派 NTLM  只支援  Windows  平台 NTLM  不支援其它瀏覽器 這是全新的協定嗎  ? 不是,它只是一個轉換介面,根據用戶端的要求來決定要使用  Kerberos  或  NTLM
Kerberos 用戶端 :  Internet Explorer 伺服端 :  IIS Server (Active Directory  網域成員 ) Active Directory: Key Distribution Center (KDC) Ticket Granting Service:  負責發出所有的   tickets (aka tokens)
Kerberos  運作機制 IIS  啓動後,當伺服器跟  KDC  做驗證成功後,會取得  ticket Ticket Granting Services Domain Controller  (KDC) IIS Server
Kerberos  運作機制 用戶端向  KDC  要求 存取  IIS  的的  ticket 如果  IIS  是  AD  成員,  KDC  會發出  shared key 用戶端使用匿名身份連線至  IIS IIS  回傳  401  錯誤,加上  WWWAuth  標頭,要求進行協調 用戶端使用這支  shared key  來建立雜湊碼,並且傳送到  IIS IIS  使用  shared key  來檢查密碼是否正確 Shared Domain Controller (KDC) IIS Server
摘要式驗證流程 IIS  伺服器 網域控制站 Active Directory  資料庫 Web  瀏覽器
摘要式驗證 使用雜湊演算法傳送密碼的雜湊碼 必要條件 IIS Sub-Auth (iissuba - LocalSystem) Active Directory 密碼使用可逆式加密儲存在  AD  資料庫上 支援平台 Windows 2000 Windows 2003
進階式摘要式驗證 什麼是進階式摘要式驗證  ? 使用  MD5  雜湊 必要條件 IIS 6.0 ( 全新安裝,非升級  !) 2003 Active Directory Forest IIS Sub-Authentication 建立使用者帳號時事先編譯好雜湊碼 RFC 2617 UseDigestSSP Metabase  屬性 1:  使用進階式摘要式驗證 0:  使用摘要式驗證
憑證驗證 在用戶端安裝有憑證,需要  SSL 憑證在伺服端可以對應到使用者帳戶 Web Server Domain Controller Client Request: Welcome.aspx Response: Certificate request Response: Welcome.aspx Request: Login.aspx + Certificate Certificate  Validation
IIS 7.0  驗證比較表
IIS  與  ASP.NET  身份驗證流程 IIS Web  瀏覽器 允許該  IP address  和  domain? 使用者身份驗證通過  ? 否 是 是 否 有 有設定  ASP.NET impersonation ? 沒有 ACL  檢查通過  ? 否 是 ASP.NET 執行  ASP.NET  程式 拒絕存取 使用指定帳號 允許存取 使用應用 程式集區帳號
ASP.NET Authentication Providers ASP.NET 2.0  支援  4  種驗證  Provider Windows –  由  IIS  與  AD  處理驗證 Forms –  使用表單與  Cookie s Passport –  使用  Passport  服務 自訂 在  Web.config  中設定 <!-- web.config file --> <authentication  mode = &quot;[Windows|Forms|Passport|None]&quot;>  </authentication>
大綱 Web  應用程式身份驗證所面臨的問題 過去的身份驗證機制 什麼是  CardSpace ? CardSpace  的運作機制 各種應用方式 登入頁面的改變
CardSpace  的目標 讓網際網路存取更安全 讓使用者可以安全的識別與使用網站… 讓系統與系統之間的連接更安全 不論是對內還對外 .
.NET Passport ? Windows Live ID http://www.passport.net 疑慮  ?
什麼是  Windows CardSpace ? Windows  平台上的身份識別選擇器 以卡片的方式呈現出使用者的數位身份 當使用選擇卡片時 … 從  Identity Provider  取得  token 在使用者確認之後,送交給  Relying Party 使用者  100%  控制整個流程  ! Security Token Service 使用者 經驗 服務 提供者
容易且安全的管理使用者自己的身份識別資料 使用在網站與  web services  的身份驗證上 Windows CardSpace 安全 架構在  WS-* Web Service  通訊協定之上 不再需要  usernames  與  passwords 一致的登入與註冊方式 防止釣魚 多重驗證 簡單
demo 管理  Windows CardSpace
大綱 Web  應用程式身份驗證所面臨的問題 過去的身份驗證機制 什麼是  CardSpace ? CardSpace  的運作機制 各種應用方式 登入頁面的改變
真實世界的  STS STS token token STS token token RP
CardSpace  運作流程 Identity Provider (IP) Security Token Service (STS) Relying Party (RP) Client 使用者要存取某項資源 RP  提出身份識別要求 1 2 使用者 3 檢查那些  IPs  可以滿足要求  ? 使用者選擇  IP 4 5 向該  IP  要求  token 6 根據  RP  要需求傳回  token 7 使用者決定可以送出  token 8 Token  送交給  RP
使用者自行決定是否要信任 Relying Party  Identity Provider 使用 X.509  憑證進行識別 進一步進行對象確認 使用  Logos Windows CardSpace  會負責追蹤卡片 用到那裡去了  ! 選擇卡片 – 安全性
demo 使用  Windows CardSpace  登入網站
大綱 Web  應用程式身份驗證所面臨的問題 過去的身份驗證機制 什麼是  CardSpace ? CardSpace  的運作機制 各種應用方式 登入頁面的改變
Federation by STS Fabrikam Contoso AD/STS Contoso\Lisa Fabrikam App Linux   STS “ 能不能幫我 …” “ 先從  Fabrikam STS  拿到  token  再說  !” “ 請給我一個  Fabrikam  token !” “ 請出示您的身份  !” “ 請給我一個  token !” “ 請出示您的身份  !” “ Lisa  您好,有什麼可以為您服務的嗎  ?” SAML SAML Fabrikam Fabrikam
網站應用 前端  Web  網站 網站 Identity Provider STS Relying Party HTTP/GET  ( 保護頁面 )      轉向到登入頁面 1 HTTP/GET  ( 登入頁面 )   2 登入頁面  (HTML)  +  x-informationcard  標籤 5 HTTP/GET|POST  目標頁面  + token 透過  WS-Mex  與  WS-Trust  取得  token 4 客戶資料庫 6 使用者選擇卡片 3
網站應用 – 減少對網站的影響 前端  Web  網站 STS 網站 Identity Provider STS Relying Party HTTP/GET  ( 保護的頁面 )      轉向到登入頁面 1 傳出登入頁面  HTML HTTP/GET  ( 登入頁面 )   2 HTTP/GET|POST  目標頁面  + token 8 3 WS-Mex 透過  WS-Trust/RST  傳送  token 透過  WS-Trust/RSTR  取得  token 6 5 透過  WS-Mex  與  WS-Trust  取得  token 客戶資料庫 7 使用者選擇卡片 4
大綱 Web  應用程式身份驗證所面臨的問題 過去的身份驗證機制 什麼是  CardSpace ? CardSpace  的運作機制 各種應用方式 登入頁面的改變
Login Page < button   onclick =&quot;javascript:return infocardlogin.submit();&quot;> Sign in with your Information Card </ button > < form   name =&quot;infocardlogin&quot;   target =&quot;_self&quot;   method =&quot;post&quot;> < object   type =&quot;application/x-informationcard&quot;   name =&quot;xmlToken&quot;> < param   name =&quot;tokenType&quot;   value =&quot;urn:oasis:names:tc:SAML:1.0:assertion&quot; > < param   name =&quot;issuer&quot;  value =&quot;http://schemas..../identity/issuer/self&quot; > < param   name =&quot;requiredClaims&quot;   value =&quot;http://.../claims/givenname, http://.../claims/surname,   http://../claims/emailaddress, http://.../claims/privatepersonalidentifier&quot; > </ object > </ form > public   partial   class   Login_aspx  : System.Web.UI. Page { protected   void  Page_Load( object  sender,  EventArgs  e) { string  xmlToken = Request[ &quot;xmlToken&quot; ]; Token  token =  new   TokenProcessor . Token (xmlToken); // Lookup the account using the uniqueId string  username =  MembershipHelper .GetUser(token.UniqueID); if  (username !=  null )  { MembershipUser  user =  Membership .GetUser(username); // give the cookie back to the browser FormsAuthentication .SetLoginCookie(user.UserName,  false ); } }  }
結論 CardSpace  是全新的身份驗證機制 使用者身份資料由使用者自行管理 滿足各類型應用程式身份驗證的需求
在何處取得   TechNet   相關資訊? 訂閱  TechNet   資訊技術人快訊   http://www.microsoft.com/taiwan/technet/flash/ 訂閱  TechNet Plus http://www.microsoft.com/taiwan/technet/ 參加  TechNet   的活 動 http://www.microsoft.com/taiwan/technet/ 下載  TechNet  研討會簡報與錄影檔 http://www.microsoft.com/taiwan/technet/webcast/