深入淺出JAAS
JAAS:JAVA的認(rèn)證和權(quán)限系統(tǒng),是JDK級的,并且屬于J2EE的規(guī)范之一,容器必須要實現(xiàn)的。作用就要規(guī)范外部(對于J2EE程序,外部指瀏覽器客戶端,對于J2SE程序,外部指調(diào)用程序)如果要作用JDK里面的東西時的情況。
認(rèn)證:
- 把驗證代碼寫在LOGINMODULE的實現(xiàn)類的login()方法中
- 通過配置文件和加JAVA_OTPS的方式告訴JDK類全名
- 告訴JDK需要使用認(rèn)證的地方
如果是J2SE的程序,在需要認(rèn)證的地方加上LOGINCONTEXT的login(),JDK會回調(diào)上面的login()方法,不通過則拋出excetion,通過則將客戶端相關(guān)信息保存到SUBJECT中;
如果是J2EE程序,則在WEB.XML中配置相應(yīng)元素,容器會回調(diào)上面的login()方法,如果不通過則導(dǎo)到登錄頁面,通過則將客戶端相關(guān)信息保存到SUBJECT中
- 寫好權(quán)限策略內(nèi)容:以PRINCALS為單位,列出這個PRINCALS能做的事:PERMISSION子類列表,PERMISSION子類實現(xiàn)了要保護(hù)的對象,關(guān)鍵識別參數(shù),操作保護(hù)方法,保存為策略文件
- 把涉及到保護(hù)對象操作的代碼放到PrivilegedAction實現(xiàn)類的run()方法內(nèi)
- 通過配置文件和加JAVA_OTPS的方式告訴JDK資源文件全名,策略文件全名和需要啟用SECURITY MANAGER
- 在需要驗證權(quán)限的地方,調(diào)用Subject.doAsPrivileged(Subject, PrivilegedAction, null),JDK或容器根據(jù)策略文件該SUBJECT是有操作要保護(hù)對象的權(quán)限,沒有則則拋出excetion,有則執(zhí)行
posted on 2011-10-06 11:38 paulwong 閱讀(339) 評論(0) 編輯 收藏 所屬分類: JAAS