日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SAML简介:安全地共享数字身份信息

發(fā)布時間:2024/4/17 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SAML简介:安全地共享数字身份信息 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

http://baike.baidu.com/view/758527.htm

http://netsecurity.51cto.com/art/200712/62057.htm

SAML簡介:安全地共享數(shù)字身份信息

安全是所有Web項目在設(shè)計時都要考慮的一個重要因素。無論是選擇最短口令,決定何時使用SSL加密HTTP會話,還是通過自動登錄cookie來識別用戶,都經(jīng)常要付出重大的設(shè)計努力,以保護(hù)用戶的身份信息和他們可能存放于Web站點的其他資料。

AD:


    簡介

    安全是所有Web項目在設(shè)計時都要考慮的一個重要因素。無論是選擇最短口令,決定何時使用SSL加密HTTP會話,還是通過自動登錄cookie來識別用戶,都經(jīng)常要付出重大的設(shè)計努力,以保護(hù)用戶的身份信息和他們可能存放于Web站點的其他資料。糟糕的安全性可能帶來公關(guān)災(zāi)難。當(dāng)最終用戶努力保持對其個人信息的控制時,他們要面臨令人迷惑的隱私政策,需要牢記眾多站點的不同口令,以及遭遇“釣魚式攻擊”事件。在宏觀層次上,數(shù)字身份引起了許多復(fù)雜的技術(shù)和社會問題,業(yè)界一些團體如Liberty Alliance和IdentityGang都正試圖通過開發(fā)新的技術(shù)標(biāo)準(zhǔn)來解決它們。 在較小的規(guī)模上,可以使用一些工具來為用戶提供更好的安全性。請考慮口令管理問題。用戶訪問他們保存?zhèn)€人資料的Web站點,在可以存取他們的資料之前必須經(jīng)過驗證。通過驗證來鑒別用戶,確保他們是所聲稱的用戶。進(jìn)行驗證最簡單方式是使用口令。然而,若每個站點都需要各自的一套口令,用戶將有難以控制的大量口令。1998年微軟首先嘗試通過其Passport network提供該問題的全球解決方案。Passport使得任意Web站點使用用戶提交給Passport的個人資料(如用戶名、地址、信用卡號)成為可能。Passport是單點登錄(single sign-on,SSO)的第一次電子商務(wù)嘗試。它沒有流行起來,部分原因是由于人們對系統(tǒng)封閉性的擔(dān)心。然而,SSO的理念非常引人注目,許多開放標(biāo)準(zhǔn)和商業(yè)計劃都追隨Passport其后。通過SSO,某個Web站點可以與其他站點共享用戶身份信息。 SSO對于使用應(yīng)用服務(wù)提供商(Application Service Provider,ASP)軟件服務(wù)的企業(yè)特別有用。ASP在自己的服務(wù)器上宿主應(yīng)用程序,出售其訪問權(quán)作為服務(wù)。公司可以在它的標(biāo)準(zhǔn)目錄服務(wù)器里管理自己的用戶和口令,然后通過SSO授予用戶訪問ASP應(yīng)用程序的權(quán)限。SSO允許公司管理自己用戶的信息,不必為每一員工維護(hù)多個用戶賬號。對用戶來說,SSO的好處在于他們可以在多個應(yīng)用程序中使用一個用戶名和口令,并且在應(yīng)用程序之間切換時無需重新驗證。SSO不僅僅用于Web應(yīng)用程序,它可用于任何類型的應(yīng)用程序,只要有安全地傳送身份信息的協(xié)議。這種通信方式的開放標(biāo)準(zhǔn)就是安全性斷言標(biāo)記語言(SAML)。

    關(guān)于SAML

    SAML為SSO提供了一個安全的協(xié)議。SAML(讀作“sam-ell”)是允許Web站點安全地共享身份信息的一個規(guī)范,它來自ebXML和其他XML標(biāo)準(zhǔn)背后的國際性聯(lián)盟OASIS。站點使用SAML的XML詞匯表和請求/應(yīng)答模式,通過HTTP交換身份信息。這種信息共享標(biāo)準(zhǔn)化能幫助Web站點與多個合作伙伴集成,避免由于為不同合作伙伴設(shè)計和維護(hù)各自私有的集成通道而引起的爭論。SAML1.0于2002年11月亮相。本文介紹最終于2003年完成的SAML1.1。雖然于2005年完成的SAML 2.0引入了支持身份聯(lián)邦的一些重要新功能,但BEA WebLogic Server 9.x支持的是SAML1.1,因此本文將重點介紹SAML1.1。

    一個基本的SAML示例

    我們來看一個非常基本的SAML示例。顧名思義,SAML的核心元素是安全性斷言。斷言即無需證明的語句。安全性斷言是關(guān)于用戶身份的語句,只能通過接收斷言發(fā)布者的站點信任獲得支持。在SAML中,發(fā)布斷言的站點叫“發(fā)布者”、“斷言方”、或“源站點”。接收斷言并信任它們的站點叫“信任方”或“目標(biāo)站點”。

    在本示例場景中,用戶使用用戶名和口令登錄源站點。然后,用戶希望無需再次驗證即可訪問目標(biāo)站點。圖1顯示了源站點和目標(biāo)站點之間能使用戶通過單點登錄訪問雙方站點的交互。

    圖1:一個SAML示例場景

    上面第4步中的SAML請求將通過HTTP作為從目標(biāo)站點到源站點的SOAP消息發(fā)送。消息體將類似于:

    <!-- This request would be wrapped in a SOAP envelope --> <samlp:Request xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol" MajorVersion="1"MinorVersion="1"RequestID="_216.27.61.137.103896224111" IssueInstant="2005-03-19T17:04:21.022Z"> <samlp:AssertionArtifact> AAGZE1RNQJEFzYNCGAGPjWvtDIRSZ4 </samlp:AssertionArtifact> </samlp:Request>

    該請求把自己標(biāo)識為來自SAML請求-應(yīng)答協(xié)議名稱空間的SAML 1.1請求(MajorVersion和MinorVersion)。SAML為請求-應(yīng)答協(xié)議元素定義了一個名稱空間,為斷言定義了另一個單獨的名稱空間。Request擁有基于請求者IP地址的惟一ID。請求的準(zhǔn)確時間也包括在內(nèi)。

    該請求中最有趣的部分是<AssertionArtifact>標(biāo)記中令人費解的字符串。目標(biāo)站點從用戶HTTP請求的查詢字符串中得到該值。由于它用于標(biāo)識瀏覽器,所以也叫“瀏覽器憑證”。注意,該請求沒有要求提交特定用戶的驗證。該請求創(chuàng)建時,目標(biāo)方并沒有用于提交請求的用戶名。該信息將在應(yīng)答中得到。瀏覽器憑證告訴可能正在同時向目標(biāo)站點發(fā)送很多用戶的源站點,應(yīng)該在此應(yīng)答中發(fā)送哪個用戶的斷言。下面是一個應(yīng)答示例:

    <samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:1.0protocol" ResponseID="huGxcDQc4cNdDyocphmi6CxEMngaó InResponseTo="_216.27.61.137.103896224111"? MajorVersion="1" MinorVersion="1" IssueInstant="2004-06-19T17:05:37.795Z"><samlp:Status> <samlp:StatusCode Value="samlp:Success" /> </samlp:Status> <saml:Assertionxmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" MajorVersion="1" MinorVersion="1" AssertionID="buGxcG4gILg5NlocyLccDz6iXrUa" Issuer="www.example.com" IssueInstant="2004-06-19T17:05:37.795Z"> <saml:Conditions NotBefore="2004-06-19T17:00:37.795Z" NotOnOrAfter="2004-06-19T17:10:37.795Z"/> <saml:AuthenticationStatement AuthenticationMethod="urn:oasis:names:tc:SAML:1.0:am:password" AuthenticationInstant="2004-06-19T17:05:17.706Z"> <saml:Subject> <saml:NameIdentifier>JSmith</saml:NameIdentifier> <saml:SubjectConfirmation> <saml:ConfirmationMethod> urn:oasis:names:tc:SAML:1.0:cm:artifact-01 </saml:ConfirmationMethod> </saml:SubjectConfirmation> </saml:Subject> </saml:AuthenticationStatement> </saml:Assertion> </samlp:Response>

    應(yīng)答的關(guān)鍵部分是Assertion元素。斷言使用了SAML Assertion名稱空間定義的一個詞匯表。它由一個驗證語句組成,該語句告訴我們用戶JSmith已通過口令驗證。它還包含了支配目標(biāo)站點斷言使用的一系列條件。在本例中,這些條件指定一個10分鐘的時間窗(time window),在時間窗之內(nèi)斷言有效。時間窗用來防止重放攻擊。沒有它,中途截取斷言的惡意用戶可以明天再次發(fā)送斷言來冒充JSmith,并獲得訪問目標(biāo)站點的權(quán)限。確認(rèn)方法元素是指上面描述的瀏覽器憑證。

    接受斷言后,目標(biāo)站點視為JSmith已直接通過其用戶名和口令登錄。注意,驗證(鑒別用戶身份)和授權(quán)(授予用戶訪問資源的權(quán)限)之間的分離在此是非常重要的。源站點負(fù)責(zé)驗證JSmith,但不提供關(guān)于JSmith在目標(biāo)站點特權(quán)的任何信息。這種安排對雙方站點都有益處:源站點無需了解目標(biāo)站點的資源或特權(quán),目標(biāo)站點也可忽略源站點管理用戶和驗證的細(xì)節(jié)。這種分離提供了非常重要的靈活性。

    假設(shè)源站點是JSmith的老板MegaBank。JSmith使用他在MegaBank的賬號訪問他工作必需的三個不同外部宿主的應(yīng)用程序。一天,MegaBank雇傭的安全顧問建議在JSmith所在部門啟用指紋驗證。如果沒有SSO和SAML,MegaBank就必須到三個應(yīng)用程序提供商那里請求他們支持指紋驗證。應(yīng)用程序提供商不得不權(quán)衡提供該支持的成本和不提供該支持可能丟失客戶的風(fēng)險。MegaBank可能必須等待提供商發(fā)布他們軟件的新版本,所有的改動或許將昂貴又費時。通過SAML,MegaBank只需改變自己的驗證過程,在JSmith和其同事登錄時檢查指紋即可。作為SAML目標(biāo)站點的宿主應(yīng)用程序無需清楚在MegaBank所做的更改,因為底層的SAML斷言是保持不變的。

    使用SAML對用戶Web站點或Web服務(wù)的設(shè)計與實現(xiàn)有一些影響,但僅限于在處理Web窗口中的用戶名和口令時,或在處理方法簽名時。例如,下面的Web services API方法不能與SAML很好地協(xié)同工作:

    public void makeSomeSystemChange(String username, String password, String[] params);

    該方法假設(shè)用戶能夠提供用戶名和口令。如果Web服務(wù)的宿主是SAML目標(biāo)站點,就沒有Web服務(wù)實現(xiàn)可以驗證的口令。有少數(shù)方式可以改進(jìn)或擴展這些接口,使其與SAML協(xié)同工作,這取決于所需的向后兼容性的水平。同樣,如果在Web頁包含了具有用戶名和口令字段的表單,那么為經(jīng)過SAML驗證的用戶禁用口令字段是非常重要的。

    安全的SAML

    由于SAML在兩個擁有共享用戶的站點間建立了信任關(guān)系,所以安全性是需考慮的一個非常重要的因素。SAML中的安全弱點可能危及用戶在目標(biāo)站點的個人信息。SAML依靠一批制定完善的安全標(biāo)準(zhǔn),包括SSL和X.509,來保護(hù)SAML源站點和目標(biāo)站點之間通信的安全。源站點和目標(biāo)站點之間的所有通信都經(jīng)過了加密。為確保參與SAML交互的雙方站點都能驗證對方的身份,還使用了證書。

    BEA WebLogic Server中的SAML

    BEA WebLogic Server 9.0是第一個包含了對SAML支持的WebLogic Server版本。WebLogic Server 9.1中進(jìn)一步加強了對SAML的支持。WebLogic Server把SAML作為WebLogic Security Service的一部分使用。SAML用來為WebLogic Web services和跨WebLogic域共享驗證信息提供SSO支持。除SAML外,WebLogic Server也為Windows桌面SSO支持Simple and Protected Negotiate (SPNEGO)協(xié)議。SAML可用來提供訪問Web應(yīng)用程序和Web service的權(quán)限。

    對于一些應(yīng)用程序,您僅需付出很少甚至無需付出額外的程序設(shè)計努力,就能使用WebLogic Server中的SAML支持。如果用戶應(yīng)用程序使用配置為WebLogic 安全域一部分的安全設(shè)置,那么集成SAML是一個首要的系統(tǒng)管理任務(wù)。WebLogic server可配置作為SAML源站點或SAML目標(biāo)站點。要使服務(wù)器成為SAML源站點,需配置一個SAML Credential Mapper。要使服務(wù)器成為SAML目標(biāo)站點,需配置一個SAML Identity Asserter.

    如果用戶應(yīng)用程序安全模式為與WebLogic Security Service進(jìn)行交互,包含了自己的特定于WebLogic的代碼,可以使用WebLogic的SAML API把該定制擴展到SAML。該API提供對WebLogic SAML服務(wù)主要組件的編程式訪問。用戶可以使用應(yīng)用程序自身的業(yè)務(wù)邏輯來擴展諸如SAMLCredentialNameMapper和SAMLIdentityAssertionNameMapper這樣的類。一旦用戶有了自己的定制類,WebLogic管理控制臺就允許用戶配置其SAML Credential Mapper(源站點)或SAML Identity Asserter(目標(biāo)站點),以便使用那些類。惟一的要求是用戶的定制類需要在系統(tǒng)類路徑中,非常類似于WebLogic啟動類,這可能對用戶部署策略產(chǎn)生影響。

    最后,如果應(yīng)用程序安全模式完全獨立于WebLogic Security Service,用戶將不能從WebLogic的SAML工具中獲益。用戶要使其應(yīng)用程序支持SAML就需要做更多工作,要么實現(xiàn)WebLogic所提供的某些服務(wù)的簡化版本,要么集成那些服務(wù)的第三方版本。但是,用戶仍將受益于可在任何J2EE應(yīng)用服務(wù)器或在如Tomcat這樣的Java Web服務(wù)器應(yīng)用程序上使用SAML。有商業(yè)和開源的SAML支持可供選擇。開源的選擇中有OpenSAML和相關(guān)的Shibboleth項目。OpenSAML是一個SAML工具包,可用來建立用戶自己的SAML源站點和目標(biāo)站點。Shibboleth更進(jìn)一步,它提供了一個構(gòu)建在OpenSAML之上的“基于SAML 1.1的跨域Web單點登錄平臺”。SourceID為Java 和.NET中的SAML 1.1提供了一套開源工具包。在Apache項目下沒有完整的SAML工具包,但WSS4J項目包含了對OpenSAML的一些支持。

    結(jié)束語

    SAML對企業(yè)應(yīng)用程序開發(fā)越來越重要。隨著大公司內(nèi)部系統(tǒng)的不斷擴展,合并身份信息對系統(tǒng)的成功管理來說非常關(guān)鍵。SAML也為依賴外部宿主應(yīng)用程序的企業(yè)提供了巨大好處。對最終用戶來說,單點登錄能同時提供安全性和便利性。WebLogic Server 9.x的SAML支持是對WebLogic Security Service最重要的新補充之一。無論它是否為用戶應(yīng)用程序安全模式的一部分,用戶都有許多選擇以使其應(yīng)用程序與SAML協(xié)同工作。

    總結(jié)

    以上是生活随笔為你收集整理的SAML简介:安全地共享数字身份信息的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。