1. 程式人生 > >Jetty對某個web應用啟用安全認證

Jetty對某個web應用啟用安全認證

1、Jetty的版本為:【jetty-7.6.7.v20120910】 

2、使用了spring bean格式的Jetty配置檔案【jetty.xml】,需要修改如下配置段 
//////////begin///////// 
<!-- modified by can_do on web app security login not for [/*]=begin= --> 
<bean id="securityConstraint" class="org.eclipse.jetty.util.security.Constraint"> 
<property name="name" value="BASIC" /> 
<property name="roles" value="admin" /> 
<property name="authenticate" value="true" /> 
</bean> 
<bean id="securityConstraintMapping" class="org.eclipse.jetty.security.ConstraintMapping"> 
<property name="constraint" ref="securityConstraint" /> 
<property name="pathSpec" value="/console/*" /> 
</bean> 
<!-- modified by can_do on web app security login =end= --> 
//////////end/////////// 
其中要改兩處: 
(1)、引數【authenticate】開啟,即改為true; 
(2)、引數【pathSpec】調整對映的context路徑,預設是所有war應用【/*】,此處根據需要可調整為針對當前應用的, 
       即需要改為【/console/*】 

注意:配置多個角色的方式時,角色間以comma隔開,如下: 

<property name="roles" value="admin,read-only" /> 

3、調整認證域中指定的配置資訊,即使用者名稱、密碼、角色等,如下: 
//////////begin///////// 
<bean id="securityLoginService" class="org.eclipse.jetty.security.HashLoginService"> 
<property name="name" value="FMQRealm" /> 
<property name="config" value="${fmq.conf}/jetty-realm.properties" /> 
</bean> 
//////////end/////////// 
此處指定了配置檔案為【${fmq.conf}/jetty-realm.properties】 
//////begin//// 
# username: password [,rolename ...] 
admin: console, admin 
//////end////// 
注意:配置格式為[使用者名稱]: [密碼], [角色] 

4、通過Jetty自動工具類,可以對密碼進行安全保護,有三種格式:混淆、MD5、校驗和 
用法如下: 
////////////begin/////// 
Usage - java org.eclipse.jetty.security.Password [<user>] <password> 
C:\fabric\fmq\lib\web>java -cp .;./jetty-all-server-7.6.7.v20120910.jar org.eclipse.jetty.util.security.Password admin console 
console 
OBF:1sot1wg21wu61ym71wu81wfw1sox 
MD5:bfafd813d7ea65ee4db1f09d7c8ffbf4 
CRYPT:adL4jzDus01r6 
///////////end///////// 

5、將認證域配置檔案中的明文轉發為密文儲存起來,如下: 
/////////begin////////// 
# username: password [,rolename ...] 
admin: MD5:bfafd813d7ea65ee4db1f09d7c8ffbf4, admin 
/////////end//////////// 

注意:此處的字首很重要,【OBF:】、【MD5:】、【CRYPT:】其告訴Jetty認證服務驗證時,採用哪種方式進行驗證。