【发布时间】:2013-12-16 21:28:11
【问题描述】:
尝试配置这组 - 但出现 403 错误。
表格说明:
SQL> desc tmc_users_names;
Name Null? Type
----------------------------------------- -------- ----------------------------
USER_NAME NOT NULL VARCHAR2(100)
USER_PASS VARCHAR2(100)
DESCRIPTION VARCHAR2(100)
SQL> desc tmc_users_roles;
Name Null? Type
----------------------------------------- -------- ----------------------------
USER_NAME NOT NULL VARCHAR2(100)
ROLE_NAME NOT NULL VARCHAR2(100)
在Oracle数据库中有角色表:
SQL> select * from tmc_users_roles;
USER_NAME
--------------------------------------------------------------------------------
ROLE_NAME
--------------------------------------------------------------------------------
setevoy // IRL - here is other data from SSL certftificate
cert
有用户表:
SQL> select * from tmc_users_names;
USER_NAME
--------------------------------------------------------------------------------
USER_PASS
--------------------------------------------------------------------------------
DESCRIPTION
--------------------------------------------------------------------------------
setevoy // IRL - here is other data from SSL certftificate
在server.xml有:
<Realm className="org.apache.catalina.realm.JDBCRealm"
driverName="oracle.jdbc.driver.OracleDriver"
connectionURL="jdbc:oracle:thin:@dbserver:1521:shname"
connectionName="tmc" connectionPassword="password"
userTable="tmc_users_names" userNameCol="user_name" userCredCol="user_pass"
userRoleTable="tmc_users_roles" roleNameCol="role_name"
还有web.xml:
<login-config>
<auth-method>CLIENT-CERT</auth-method>
</login-config>
<security-role>
<role-name>cert</role-name>
</security-role>
据我了解-由于身份验证过程,Tomcat 必须调用数据库,获取tmc_users_names 表,从中获取user_name,然后调用tmc_users_roles,并比较user_name 和role_name,对吗?
但是 - 我得到了 403。
而且 - 如果我使用另一个数据库方案(使用 views 而不是通常的 table) - 它可以工作。
我从官方手册页 Tomcat 中获得了当前表的方案(有 MySQL - 但我认为 Tomcat 没有区别?)。
那么 - Oracle 数据库的正确表结构是什么?只有views?在我看来 - 一切都必须更容易......
附:为什么我不使用有效的方案?因为 - 我没有创建它,我不知道它是如何工作的。这就是我尝试自己制作的原因 - 以了解此身份验证过程。
感谢您的提示。
【问题讨论】:
-
不确定这是否是它不起作用的原因,但我认为您需要在 Realm 中建立工厂。工厂=“org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory”。也不相关,但使用“digest=...”更安全,因此您可以存储加密密码。否则我认为给定的配置没有问题。
标签: oracle tomcat authentication