参考在书城里抄的一些资料,在Tomcat5.0上实验 JDBCRealm 强制安全,保障web应用的安全。
但在配置的时候出现了莫名的SQLException,还请各位DX指点!
配置如下:
1、确定要保护的web应用的path为:/testing/* 即:要访问http://www.sdg.com/testing/ 下所有的应用,都必须通过
JDBCRealm的强制验证。
2、已经配置好了SQL Server,建一数据库Panabia,2个表:users,groups.分别存储用户、用户-角色信息。SQL Server
JDBC驱动程式已经拷贝至%TOMCAT_HOME%\common\lib 下。经试验,JDBC连接SQL Server正常。
3、配置\ROOT\WEB-INF\下的web.xml,添加security-constraint配置段,配置为BASIC方式验证。
如下所示:
<security-constraint> <web-resource-collection> <web-resource-name>ROLE TEST</web-resource-name> <url-pattern>/testing/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>admin</role-name> </auth-constraint> </security-constraint>
<login-config> <auth-method>BASIC</auth-method> <realm-name>ROLE TEST</realm-name> </login-config>
|
4、配置Tomcat的 server.xml文件,将原有的 Realm 注释掉,添加如下:
<Realm className="org.apache.catalina.realm.JDBCRealm" debug="99" driverName="com.microsoft.jdbc.sqlserver.SQLServerDriver" connectionURL="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Panabia;User=super;Password=fuckjapan" userTable="users" userNameCol="username" userCredCol="password" userRoleTable="groups" roleNameCol="role"/>
|
5、重新启动Tomcat,访问http://www.sdg.com/testing/src.jsp 时,弹出对话框,要求输入用户名与密码(我本来以为
已经大功告成了...谁知道.....)
我输入了属于admin角色的帐户:username:super password:fuckjapan
但是始终不能通过验证,最后来一个 HTTP 401 错误--------
**查看Tomcat的 log文件,发现有以下的SQLException:
2004-08-22 14:14:49 JDBCRealm[]: Username super successfully authenticated 2004-08-22 14:14:49 JDBCRealm[]: Exception performing authentication java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Can't start a cloned connection while in manual transaction mode. at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
|
//........(略)上面的"Username super successfully authenticated" 说明 JDBCRealm还是工作正常的,起码验证了super帐号--
但为什么又会出现"Exception performing authentication"?
百思不得其解------还请各位DX指点迷津!THKS。