acegi的認證過程

2021-08-29 06:48:21 字數 1535 閱讀 2478

authenticationmanager是認證核心介面,其作用是驗證客戶端輸入端使用者名稱是否正確

這個介面只有乙個方法

[code]public authentication authenticate(authentication authentication)

throws authenticationexception;[/code]

這個方法就是去驗證使用者名稱 密碼時候正確,那麼使用者名稱密碼在那兒呢?封裝在authentication 類中,這樣在authenticate()方法中就可取到使用者名稱密碼然後去驗證。

驗證使用者名稱密碼的方式是多種多樣的如 dao驗證 ldap驗證,被稱為authenticationprovider,這些provider只要有乙個驗證通過就認為驗證成功。(從別處看來的,未驗證)

authenticationmanager有乙個子類providermanager,用來管理這些provider

其採用迴圈方式執行每個provider

[code]while (iter.hasnext()) catch (authenticationexception ae)

if (result != null)

}}[/code]

迴圈完後,認證結束 返回了乙個authentication例項, 這個authentication例項跟作為引數傳進去的例項有什麼不同呢?

看下面的**

[code]public final authentication authenticate(authentication authrequest)

throws authenticationexception catch (authenticationexception e)

}[/code]

這段**還是不能看到兩個authresult 和authrequest的不同

看下面的**

[code]protected authentication createsuccessauthentication(object principal, authentication authentication,

userdetails user) [/code]

可以看到credentials又被作為結果的一部分返回 。

user.getauthorities是取得使用者的許可權

principal封裝使用者名稱 email等一些使用者資訊

值得注意的是這句,將傳進來的details資料當作結果的一部分返回

result.setdetails(authentication.getdetails());

還有這句

[code]copydetails(authrequest, authresult);

private void copydetails(authentication source, authentication dest)

}[/code]

引數中的details又被重新設定到結果中並返回,如果在驗證過程中details沒有改變。。。。

這個details到底是幹什麼用的呢? 今天先寫到這兒 明天再研究

Acegi 的擴充套件

年剛過,還很懶,這個東東年前都開始關注了,今天把學習成果總結一下。acegi,乙個安全系統,和面向介面的程式設計方式,支援acl jaas基於spring.我的理解其價值在於 replace container managed authentication,將安全這一塊脫離具體j2ee容器,將來需要...

OAuth認證過程

一 什麼是oauth協議 oauth 開放授權 是乙個開放標準。允許第三方 在使用者授權的前提下訪問在使用者在服務商那裡儲存的各種資訊。而這種授權無需將使用者提供使用者名稱和密碼提供給該第三方 oauth允許使用者提供乙個令牌給第三方 乙個令牌對應乙個特定的第三方 同時該令牌只能在特定的時間內訪問特...

WPA認證過程

無線安全 2年前 2015 01 11 9,6170 預共享金鑰模式 概念預共享金鑰可以是8 63之間任意長度的可列印的ascii碼.使用wap加密演算法依賴pairwise master key pmk pmk使用預共享金鑰和ssid進行計算 當客戶端擁有pmk,它就與ap開始協商乙個新的,臨時的...