freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

基于net的單點登錄(sso)解決方案_畢業(yè)設計論文(參考版)

2024-08-31 15:47本頁面
  

【正文】 事實上,用戶身份信息的來源應該是多種多樣的,可以是來自數據庫中, LDAP 中,甚 至于來自操作系統(tǒng)自身的用戶列表。另外在 OpneSSO ( 的架構指南中也給出了部分安全措施的解決方案。 當其中一個應用的安全性不好,其他所有的應用都會受到安全威脅 因為有 SSO,所以當某個處于 SSO 的應用被黒客攻破,那么很容易攻破其他處于同一個SSO 保護的應用。在本方案中,并沒有考慮 cookie在傳輸時候的保護。懷有惡意的用戶如果猜測到合法的 cookie 就可以被當作已經登錄的用戶,任意訪問權限范圍內的資源 cookie 的效驗和保護 在本方案中,雖然密碼只要傳輸一次就夠了,可 cookie 在網絡中是經常傳來傳去。由于 cookie 是一個用戶登錄的唯一憑據,對 cookie 的保護措施是系統(tǒng)安全的重要環(huán)節(jié): cookie 的長度和復雜度 在本方案中, cookie是有一個固定的字符串(我的姓名)加上當前的時間戳。 我們說過,采用 SSO 技術的主要目的之一就是加強安全性,降低安全風險。 4 當前方案的安全局限性 當前這個 WEBSSO 的方案是一個比較簡單的雛形,主要是用來演示 SSO 的概念和說明SSO 技術的實現方式。 } } 這兩個函數 主要是利用 apache 中的 client 訪問 SSOAuth 提供的認證服務來完成效驗cookie 和 logout 的功能。 ()。 GetMethod get = new GetMethod(SSOServiceURL+authAction+cookievalue)。cookiename=。 } finally { ()。 String result = ()。 GetMethod get = new GetMethod(SSOServiceURL+authAction+cookievalue)。cookiename=。在配置文件中,有下面的一個節(jié)點表示了此 filter 的 URL 映射關系:只攔截所有的 jsp 請求。 } } } doFilter()方法的邏輯也是非常簡單的,在接收到請求的時候,先去查找是否存在 期望的cookie值,如果找到了,就會調用 SSOService(cookieValue)去效驗這個 cookie 的有效性。 if (problem instanceof IOException) throw (IOException)problem。 ()。 try { (req, res)。 } else {//效驗成功 (SSOUser,result)。 logoutService(cookieValue)。 } } } if ((failed)) { //效驗失敗或沒有找到 cookie,則需要登錄 (SSOLoginPage+?goto=+url)。 //如果找到了相應的 cookie 則效驗其有效性 result = SSOService(cookieValue)。 i 。 [] diskCookies = ()。 if (qstring == null) qstring =。 String url = ().toString()。 HttpServletResponse response = (HttpServletResponse) res。 下面看看 filter 的主體方法 doFilter(): public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { if (debug) log(SSOFilter:doFilter())。因為當前的 Web應用很可能和身份認證服務( SSOAuth)不在同一臺機器上,所以需要讓這個 filter 知道身份認證服務部署的 URL,這樣才能去調用它的服務。 SSOLoginPage = (SSOLoginPage)。 } } cookieName = (cookieName)。 private String SSOServiceURL= private String SSOLoginPage= public void init(FilterConfig filterConfig) { = filterConfig。 public class SSOFilter implements Filter { private FilterConfig filterConfig = null。 import .*。 import .*。 import .*。 import .*。 package SSO。( Filter的 使 用 可 以 參 考 JavaWolrd 的 文 章 Filter 是一個具有很好的模塊化,可重用的編程 API,用在 SSO 正合適不過。 Filter 是比較好的方法。這個方法可以使用,不過,它的缺點是不能重用。不過這個笨方法沒有人會用 :)。 如 果 cookie 效驗成功,就允許用戶訪問當前請求的資源。因為有可能你已經 logout,或者 cookie已經過期了,或者身份認證服務重起過,這些情況下,你的 cookie 都可能無效。 當你再訪問這個應用的需要保護的 URL 的時候,系統(tǒng)還是要進行安全檢查的,但是這次系統(tǒng)能夠發(fā)現相應的 cookie。 一般來說, Web 應用需要 SSO 的功能,應該通過以下的交互過程來調用身份認證服務的提供的認證服務: Web 應用中每一個需要安全保護的 URL 在訪問以前,都需要進行安全檢查,如果發(fā)現沒有登錄(沒有發(fā)現認證之后所帶的 cookie),就重新定向到 SSOAuth 中的 進行登錄。這點很顯然,要想使多個應用具有單點登錄的功能,還需要每個應用本身的配合:將自己的身份認證的服務交給一個統(tǒng)一的身份認證服務- SSOAuth。 其他的方法更加簡單,這里就不多解釋了。在這里我給了很大的值( 1000 分鐘),導致的行為是:當你關閉瀏覽器(或者關機),下次再打開瀏覽器訪問剛才的應用,只要在 1000分鐘之內,就不需要再登錄了。這個方法是用來設置 cookie 的有效期,單位是秒。在handlerFromLogin()這個方法中,我們通過接收 “goto”這個參數來保存用戶最初訪問的 URL,成功后便重新定向到這個頁面中。身份服務是用來保護其他應用服務的,用戶一般在訪問一個受 SSOAuth 保護的 Web 應用的某個 URL 時,當前這個應用會發(fā)現當前的用戶還沒有登錄,便強制將也頁面轉向 SSOAuth 的 ,讓用戶登錄。 登錄成功后,瀏覽器會到哪個頁面呢?那我們回顧一下我們是如何使用身份認證服務的。 } } } handlerFromLogin()這個方法是用來處理來自 。 (gotoURL)。 (login success, goto back url: + gotoURL)。 (/)。 (60000)。 Cookie wangyu = new Cookie(cookiename, newID)。 String newID = createUID()。 if ((pass==null)||(!(password))) getServletContext().getRequestDispatcher(/).forward(request, response)。 String password = (password)。 SSOAuth 還提供 logout 服務。 SSOAuth 還能直接效驗非 。因為瀏覽器會將第一次登錄時產生的 cookie 和請求一起發(fā)送。用戶在提供了用戶名和密碼以后,就會用 handlerFromLogin()這個方法來驗證。它的功能顯而易見:當用戶成功登錄以后,再次訪問別的系統(tǒng),為了鑒別這個用戶請求所帶的 cookie 的有效性,需要到 SSOIDs 中檢查這樣的映射關系是否存在。在實際應用中, accounts 應該是去數據庫中或 LDAP 中獲得,為了簡單起見,在本樣例中我使用了 ConcurrentMap 在內存中用程序創(chuàng)建了三個用戶。其中有兩個靜態(tài)成員變量: accounts和 SSOIDs,這兩個成員變量都使用了 中線程安全的 MAP 類: ConcurrentMap,所以這個樣例一定要 才能運行。 ()。 } else if ((logout)) { String myCookie = (cookiename)。 (result)。 ()。 if (myCookie != null) result = authCookie(myCookie)。 if (action==null) { handlerFromLogin(request,response)。 String action = (action)。 (carol, carol)。 (wangyu, wangyu)。 SSOIDs = new ConcurrentHashMap()。 domainname= (domainname)。 String domainname。 static private ConcurrentMap SSOIDs。 import .*。 import .*。 import .*。 import .*。身份認證的所有服務幾乎都由 SSOAuth 的 Servlet 來實現了; 用來顯示登錄的頁面(如果發(fā)現用戶還沒有登錄過); 是用 來顯示登錄失敗的信息(如果用戶的用戶名和密碼與信息數據庫中的不一樣)。 WEBSSO 代碼講解 身份認證服務代碼解析 WebSSO 的 源 代 碼 可 以 從 網 站 地 址 下載。 請接著在同 一個瀏覽器中輸入第二 個 web 應用的測 試 URL( ) ,例如 SSOWebDemo2/。用 “jar cvf SSOWebDemo1/”就可以完成這個功能。 解壓縮 SSOWebDemo1 和 SSOWebDemo2 文件,分別在它們 /WEBINF/下找到 文件,請修改其中的幾個初始化參數 initparam paramnameSSOServiceURL/paramname paramvalue /initparam initparam paramnameSSOLoginPage/paramname paramvalue /initparam 將其中的 SSOServiceURL 和 SSOLoginPage 修改成部署 SSOAuth應用的機器名、端口號以 及根路徑(缺省是 SSOAuth)以反映實際的部署情況。設置完后,根據你所選擇的 J2EE容器,可能需要將 SSOAuth 這個目錄壓縮打包成 war 文件。我缺省設置的是 “.”。但是有一個限制,那兩臺部署應用( demo demo2)的機器的域名需要相同,這在后面的章節(jié)中會解釋到 cookie 和domain 的關系以及如何制作跨域的 WEBSSO 解壓縮 文件,在 /WEBINF/下的 中請修改 “domainname”的屬性以反映實際的應用部署情況, domainname 需要設置為兩個單點登錄的應用( demo1 和 demo2)所屬的域名。之所以要用 是因為筆者使用了一個線程安全的高性能的 Java 集合類 “ConcurrentMap
點擊復制文檔內容
醫(yī)療健康相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1