0502 windwos server 2008 card space 新一代身份驗證機制
TRANSCRIPT
新一代身份驗證機制 - Windows Card Space
曹祖聖台灣微軟資深講師[email protected]://teacher.allok.com.twMCP, 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 存取控制
1. 檢查來源 IP
2. 檢查使用者
3. 檢查伺服器存取權限
4. 檢查共用權限 ( 如果是 UNC 路徑 )
5. 檢查 NTFS 權限
身份驗證介紹身份驗證介紹• IIS IIS 中的身份驗證中的身份驗證
匿名
基本
摘要
Kerberos
NTLM
Server
Core
• 要求進入 要求進入 IISIIS• IIS IIS 將要求轉送到匿名 將要求轉送到匿名
provider: provider: IIS IIS 建立路徑建立路徑 (w3svc/1/root) (w3svc/1/root) 並且檢並且檢
查匿名證是否有啓用查匿名證是否有啓用是是 : : 提供路徑與提供路徑與 Anon.users token Anon.users token
給給 authorization managerauthorization manager否否 : IIS : IIS 將路徑交給其它每一個 將路徑交給其它每一個
providerprovider ,檢查該路徑是否啓用,檢查該路徑是否啓用該 該 provider provider 提供的驗證提供的驗證
• 每一個有啓用的 每一個有啓用的 provider provider 檢檢查查使用者身份 之後,會回查查使用者身份 之後,會回傳適當的表頭給 傳適當的表頭給 IISIIS
IIS 7.0 IIS 7.0 身份驗證流程身份驗證流程
NTLM
Basic
Anonymous
IISServerCore
Kerberos
Digest
Request received by IIS
AuthenticationProviders
Passport
Client
IIS 伺服器
default.htm
Web 瀏覽器
匿名驗證流程匿名驗證流程
匿名驗證帳號
• 匿名帳號 : IUSR_[ 電腦名稱 ]
IIS 安裝時建立,並加入 Guests 系統群組• 請注意套用到 Guests 的自訂原則
預設狀況下, IUSR 帳號被授予所有資料夾的讀取權限
IUSR 帳號也使用在 FTP 伺服器的匿名驗證上
• IIS Sub-authentication
避免密碼同步的問題
基本驗證流程
Base64 編碼的使用者名稱和密碼
401 Error
IIS 伺服器
default.htm
Web 瀏覽器
基本驗證
• 使用 Base64 編碼來傳送密碼
• 優點RFC 相容 (RFC 2617)
支援透過 Web Proxy
瀏覽器支援廣泛
如果配合 SSL ,是很好的驗證方式
• 缺點使用者需要輸入 Windows 帳號
密碼直接傳送,如果沒有 SSL 配合,非常不安全
整合式 Windows 驗證
Negotiate要求
Kerberos NTLM
首先試試 接下來再試
1.1. 也可以只用 也可以只用 NTLMNTLM ,但不能只用 ,但不能只用 KerberosKerberos2.2. 兩者都不支援 兩者都不支援 Web ProxyWeb 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 \ PasswordDomain 和 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 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 Kerberos 運作機制運作機制
IIS 啓動後,當伺服器跟 KDC 做驗證成功後,會取得 ticket
Ticket Granting Services
Domain Controller (KDC)
IIS Server
Kerberos 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
DomainController
Client
Request: Welcome.aspx
Response: Certificate request
Response: Welcome.aspxRequest: Login.aspx + Certificate
Certificate Validation
IIS 7.0 IIS 7.0 驗證比較表驗證比較表
ASP.NET
IIS 與 ASP.NET 身份驗證流程
IISIIS
Web 瀏覽器Web 瀏覽器
執行 ASP.NET 程式
拒絕存取
使用指定帳號允許存取
允許該 IP address 和 domain?
使用者身份驗證通過 ?
否是
是否
有
有設定 ASP.NET impersonation ?
沒有
ACL 檢查通過 ?
否
使用應用程式集區帳號
是
ASP.NET Authentication Providers
• ASP.NET 2.0 支援 4 種驗證 Provider
Windows – 由 IIS 與 AD 處理驗證
Forms – 使用表單與 Cookies
Passport – 使用 Passport 服務
自訂
• 在 Web.config 中設定
<!-- web.config file --><authentication
mode = "[Windows|Forms|Passport|None]"> </authentication>
<!-- web.config file --><authentication
mode = "[Windows|Forms|Passport|None]"> </authentication>
大綱Web 應用程式身份驗證所面臨的問題
過去的身份驗證機制
什麼是 CardSpace ?
CardSpace 的運作機制
各種應用方式
登入頁面的改變
CardSpace 的目標
• 讓網際網路存取更安全•讓使用者可以安全的識別與使用網站…
• 讓系統與系統之間的連接更安全
•不論是對內還對外 .
.NET Passport ?
• Windows Live ID
• http://www.passport.net
• 疑慮 ?
什麼是 Windows CardSpace ?
• Windows 平台上的身份識別選擇器以卡片的方式呈現出使用者的數位身份
• 當使用選擇卡片時 …從 Identity Provider 取得 token
在使用者確認之後,送交給 Relying Party
• 使用者 100% 控制整個流程 !
SecurityToken
Service
使用者經驗
服務提供者
• 容易且安全的管理使用者自己的身份識別資料
• 使用在網站與 web services 的身份驗證上
安全
架構在 WS-* Web Service 通訊協定之上
Windows CardSpace
不再需要 usernames 與 passwords
一致的登入與註冊方式
防止釣魚多重驗證
簡單
demo管理 Windows CardSpace
大綱Web 應用程式身份驗證所面臨的問題
過去的身份驗證機制
什麼是 CardSpace ?
CardSpace 的運作機制
各種應用方式
登入頁面的改變
真實世界的 STS
STS
token token
STStoken token
RP
CardSpace 運作流程
Identity Provider (IP)Security Token Service (STS) Relying Party (RP)
Client使用者要存取某項資源
RP 提出身份識別要求
1
2
使用者
3檢查那些 IPs 可以滿足要求 ?
使用者選擇 IP4
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 的運作機制
各種應用方式
登入頁面的改變
Fabrikam
Federation by STS
Contoso
AD/STS
Contoso\Lisa FabrikamApp
Linux STS
“能不能幫我 …”
“先從 Fabrikam STS 拿到 token 再說 !”
“請給我一個 Fabrikam token !”
“請出示您的身份 !”
“請給我一個 token !”
“請出示您的身份 !”
“Lisa 您好,有什麼可以為您服務的嗎 ?”
SAML
SAML
FabrikamFabrikam
網站應用
前端 Web 網站
網站HTTP/GET ( 保護頁面 )
轉向到登入頁面
1
HTTP/GET ( 登入頁面 ) 2
登入頁面 (HTML) + x-informationcard 標籤
Identity ProviderSTS
5 HTTP/GET|POST 目標頁面 + token
透過 WS-Mex 與 WS-Trust 取得 token4
客戶資料庫
6
Relying Party使用者選擇卡片
3
網站應用 – 減少對網站的影響
前端 Web 網站
STS
網站HTTP/GET ( 保護的頁面 ) 轉向到登入頁面
1
傳出登入頁面 HTMLHTTP/GET ( 登入頁面 ) 2
Identity Provider
STS
Relying Party
HTTP/GET|POST 目標頁面 + token8
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="javascript:return infocardlogin.submit();"> Sign in with your Information Card</button>
<form name="infocardlogin" target="_self" method="post"> <object type="application/x-informationcard" name="xmlToken"> <param name="tokenType" value="urn:oasis:names:tc:SAML:1.0:assertion" > <param name="issuer" value="http://schemas..../identity/issuer/self" > <param name="requiredClaims" value="http://.../claims/givenname, http://.../claims/surname, http://../claims/emailaddress, http://.../claims/privatepersonalidentifier" > </object></form>
public partial class Login_aspx : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { string xmlToken = Request["xmlToken"];
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/