【问题标题】:Configuring Tomcat's JDBCRealm with Oracle DB - what is correct tables structure?使用 Oracle DB 配置 Tomcat 的 JDBCRealm - 什么是正确的表结构?
【发布时间】: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_namerole_name,对吗?

但是 - 我得到了 403。

而且 - 如果我使用另一个数据库方案(使用 views 而不是通常的 table) - 它可以工作。

我从官方手册页 Tomcat 中获得了当前表的方案(有 MySQL - 但我认为 Tomcat 没有区别?)。

那么 - Oracle 数据库的正确表结构是什么?只有views?在我看来 - 一切都必须更容易......

附:为什么我不使用有效的方案?因为 - 我没有创建它,我不知道它是如何工作的。这就是我尝试自己制作的原因 - 以了解此身份验证过程。

感谢您的提示。

【问题讨论】:

  • 不确定这是否是它不起作用的原因,但我认为您需要在 Realm 中建立工厂。工厂=“org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory”。也不相关,但使用“digest=...”更安全,因此您可以存储加密密码。否则我认为给定的配置没有问题。

标签: oracle tomcat authentication


【解决方案1】:

别忘了跑:

SQL> commit;
Commit complete.

在向 Oracle 表中添加条目后... :-)

【讨论】:

    猜你喜欢
    • 2021-06-07
    • 1970-01-01
    • 2016-06-01
    • 2012-05-21
    • 1970-01-01
    • 1970-01-01
    • 2019-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多