Jetty對某個web應用啟用安全認證
阿新 • • 發佈:2019-02-06
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認證服務驗證時,採用哪種方式進行驗證。
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認證服務驗證時,採用哪種方式進行驗證。