在weblogic中利用應(yīng)用服務(wù)器本身的配置,可以比較全面的實現(xiàn)用戶認(rèn)證。由于我們主要是面向開發(fā),這里主要講解在servlet中使用用戶角色規(guī)則(也就是我們常說的http用戶認(rèn)證,下面還是使用這個我們熟悉的名詞吧)。 Weblogic用戶認(rèn)證的三種方式 在weblogic應(yīng)用服務(wù)器中,系統(tǒng)提供了三種不同的用戶認(rèn)證方式:
BASIC
基本的身份認(rèn)證方式,使用WEB瀏覽器彈出一個要求輸入用戶名和密碼的對話框。這個用戶名和密碼將在網(wǎng)站的某個(些)內(nèi)容模塊中被強(qiáng)制要求。 FORM
基于FORM的用戶認(rèn)證要求你返回一個包括用戶名和密碼的HTML表單,這個表單相對應(yīng)與用戶名和密碼的元素必須是j_username和j_password,并且表單的action描述必須為j_security_check。下面是一個表單的例子: <form method="POST" action="j_security_chack"> <input type="text" name="j_username"> <input type="password" name="j_password"> </form> 包括這個表單的資源可以是一個HTML頁面、一個JSP頁面或者一個servlet。你可以在<form-login-page>元素中定義。當(dāng)這個認(rèn)證頁面被提交的時候,將創(chuàng)建一個HTTP session。所以,當(dāng)認(rèn)證成功后,使用session.isNew()方法將獲得一個FALSE的返回。 CLIENT-CERT
就是使用客戶數(shù)字證書來認(rèn)證請求,一般都和SSL相聯(lián)系。如果需要使用請參考有關(guān)SSL相關(guān)內(nèi)容。
使用何種認(rèn)證方法,可以在web.xml里的<login-config>元素中的子元素<auth-method>里定義。可能的選擇的值為BASIC或FORM或CLIENT-CERT三者之一。
在servlet中使用用戶認(rèn)證 要在servlet中使用用戶認(rèn)證,必須先對web application進(jìn)行相應(yīng)的配置。 1、修改weblogic.xml文件中的相關(guān)條目: <security-role-assignment> <role-name>mgr</role-name> <principal-name>al</principal-name> <principal-name>george</principal-name> <principal-name>ralph</principal-name> </security-role-ref> 注:<role-name>是角色名,例如現(xiàn)在這是管理員,然后<principal-name>元素中指定角色所包括的所有用戶名。
2、在web.xml的<security-role>元素中定義要使用的角色名mgr(在<role-name>元素中),并在<servlet>注冊項中為mgr角色做一個鏈接(manager) <servlet> ... <role-name>manager</role-name> <role-link>mgr</role-link> ... </servlet> <security-role> <role-name>mgr</role-name> </security-role> 到這里服務(wù)器上的配置文件就完成了所需要的修改。
3、在servlet中引用服務(wù)器的角色認(rèn)證,只需要在合適的地方加入下一語句即可。 isUserInRole("manager"); 值得注意的是,當(dāng)用戶認(rèn)證順利返回后,一個session將被建立。而在weblogic中,缺省的情況下各個web appliction都使用相同的cookie名(JSESSIONID),所以當(dāng)任何一個認(rèn)證成功以后,所有的Web Application都將使用這個相同的cookie名來保存有關(guān)認(rèn)證的信息,從而實現(xiàn)“全站通”概念。假如你想對某個Web Application使用一個單獨的認(rèn)證,你可以為這個應(yīng)用單獨定義一個cookie名,這可以通過對weblogic.xml里的<session-descriptor>元素有關(guān)內(nèi)容進(jìn)行相應(yīng)修改。
|