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

正文內(nèi)容

java實(shí)現(xiàn)單點(diǎn)登錄,圖例及相關(guān)代碼-資料下載頁

2025-06-25 06:59本頁面
  

【正文】 g SSOLoginPage = 。private static String cookiefilepath = 。 .........,我們配置了它們的值:SSOServiceURL=:8080/SSOAuth/SSOAuthSSOLoginPage=:8080/SSOAuth/cookiefilepath=C:\\Documents and Settings\\yw137672\\Application Data\\Mozilla\\Profiles\\default\\\\SSOServiceURL和SSOLoginPage成員變量指向了在WebSSO中用過的身份認(rèn)證模塊:SSOAuth,這就說明在桌面系統(tǒng)中我們試圖和Web應(yīng)用共用一個認(rèn)證服務(wù)。而cookiefilepath成員變量則泄露了一個“天機(jī)”:我們使用了Mozilla瀏覽器的cookie文件來保存登錄的憑證。換句話說,和Mozilla共用了一個保存登錄憑證的機(jī)制。之所以用Mozilla是應(yīng)為它的Cookie文件格式簡單,很容易編程訪問和修改任意的Cookie值。(我試圖解析Internet Explorer的cookie文件但沒有成功。)下面是登錄模塊DesktopSSOLoginModule的主體:login()方法。邏輯也是非常簡單:先用Cookie來登陸,如果成功,則直接就進(jìn)入系統(tǒng),否則需要用戶輸入用戶名和密碼來登錄系統(tǒng)。public boolean login() throws LoginException{try {if (Cookielogin()) return true。} catch (IOException ex) {()。}if (passwordlogin()) return true。throw new FailedLoginException()。}下面是Cookielogin()方法的實(shí)體,它的邏輯是:先從Cookie文件中獲得相應(yīng)的Cookie值,通過身份效驗(yàn)服務(wù)效驗(yàn)Cookie的有效性。如果cookie有效就算登錄成功;如果不成功或Cookie不存在,用cookie登錄就算失敗。public boolean Cookielogin() throws LoginException,IOException {String cookieValue=。int cookieIndex =foundCookie()。if (cookieIndex0)return false。elsecookieValue = getCookieValue(cookieIndex)。username = cookieAuth(cookieValue)。if (! (failed)) {loginSuccess = true。return true。}return false。}用用戶名和密碼登錄的方法要復(fù)雜一些,通過Callback的機(jī)制和屏幕輸入輸出進(jìn)行信息交互,完成用戶登錄信息的獲??;獲取信息以后通過userAuth方法來調(diào)用遠(yuǎn)端SSOAuth的服務(wù)來判定當(dāng)前登錄的有效性。public boolean passwordlogin() throws LoginException {//// Since we need input from a user, we need a callback handlerif (callbackHandler == null) {throw new LoginException(No CallbackHandler defined)。}Callback[] callbacks = new Callback[2]。callbacks[0] = new NameCallback(Username)。callbacks[1] = new PasswordCallback(Password, false)。//// Call the callback handler to get the username and passwordtry {(callbacks)。username = ((NameCallback)callbacks[0]).getName()。char[] temp = ((PasswordCallback)callbacks[1]).getPassword()。password = new char[]。(temp, 0, password, 0, )。((PasswordCallback)callbacks[1]).clearPassword()。} catch (IOException ioe) {throw new LoginException(())。} catch (UnsupportedCallbackException uce) {throw new LoginException(())。}()。String authresult =。try {authresult = userAuth(username, password)。} catch (IOException ex) {()。}if (! (failed)) {loginSuccess= true。clearPassword()。try {updateCookie(authresult)。} catch (IOException ex) {()。}return true。}loginSuccess = false。username = null。clearPassword()。( Login: PasswordLoginModule FAIL )。throw new FailedLoginException()。}CookieAuth和userAuth方法都是利用apahce的client工具包和遠(yuǎn)程的SSOAuth進(jìn)行連接,獲取服務(wù)。private String cookieAuth(String cookievalue) throws IOException{String result = failed。HttpClient client = new HttpClient()。 GetMethod get = new GetMethod(SSOServiceURL+Action1+cookievalue)。try {(get)。result = ()。} finally {()。}return result。}private String userAuth(String username, char[] password) throws IOException{String result = failed。String passwd= new String(password)。HttpClient client = new HttpClient()。 GetMethod get = new GetMethod(SSOServiceURL+Action2+username+amp。password=+passwd)。passwd = null。try {(get)。result = ()。} finally {()。}return result。}還有一個地方需要補(bǔ)充說明的是,在本樣例中,用戶名和密碼的輸入都會在屏幕上顯示明文。如果希望用掩碼形式來顯示密碼,以提高安全性,請參考:7 真正安全的全方位SSO解決方案:Kerberos我們的樣例程序(桌面SSO和WEBSSO)都有一個共性:要想將一個應(yīng)用集成到我們的SSO解決方案中,或多或少的需要修改應(yīng)用程序。Web應(yīng)用需要配置一個我們預(yù)制的filter;桌面應(yīng)用需要加上我們桌面SSO的JAAS模塊(至少要修改JAAS的配置文件)??墒怯泻芏喑绦蚴菦]有源代碼和無法修改的,例如常用的遠(yuǎn)程通訊程序telnet和ftp等等一些操作系統(tǒng)自己帶的常用的應(yīng)用程序。這些程序是很難修改加入到我們的SSO的解決方案中。事實(shí)上有一種全方位的SSO解決方案能夠解決這些問題,這就是Kerberos協(xié)議(RFC 1510)。Kerberos是網(wǎng)絡(luò)安全應(yīng)用標(biāo)準(zhǔn)(),由MIT學(xué)校發(fā)明,被主流的操作系統(tǒng)所采用。在采用kerberos的平臺中,登錄和認(rèn)證是由操作系統(tǒng)本身來維護(hù),認(rèn)證的憑證也由操作系統(tǒng)來保存,這樣整個桌面都可以處于同一個SSO的系統(tǒng)保護(hù)中。操作系統(tǒng)中的各個應(yīng)用(如ftp,telnet)只需要通過配置就能加入到SSO中。另外使用Kerberos最大的好處在于它的安全性。通過密鑰算法的保證和密鑰中心的建立,可以做到用戶的密碼根本不需要在網(wǎng)絡(luò)中傳輸,而傳輸?shù)男畔⒁矔值陌踩?。目前支持Kerberos的操作系統(tǒng)包括Solaris, windows,Linux等等主流的平臺。只不過要搭建一個Kerberos的環(huán)境比較復(fù)雜,KDC(密鑰分發(fā)中心)的建立也需要相當(dāng)?shù)牟襟E。Kerberos擁有非常成熟的API,包括Java的API。使用Java Generic Security Services(GSS) API并且使用JAAS中對Kerberos的支持(詳細(xì)信息請參見Sun的Javaamp。Kerberos教程),要將我們這個樣例改造成對Kerberos的支持也是不難的。 ()當(dāng)中直接就包含了對GSS的支持,不需要單獨(dú)下載GSS的包。8 總結(jié)本文的主要目的是闡述SSO的基本原理,并提供了一種實(shí)現(xiàn)的方式。通過對源代碼的分析來掌握開發(fā)SSO服務(wù)的技術(shù)要點(diǎn)和充分理解SSO的應(yīng)用范圍。但是,本文僅僅說明了身份認(rèn)證的服務(wù),而另外一個和身份認(rèn)證密不可分的服務(wù)權(quán)限效驗(yàn),卻沒有提到。要開發(fā)出真正的SSO的產(chǎn)品,在功能上、性能上和安全上都必須有更加完備的考慮。
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1