Lau*_*ens 2 java jdbc glassfish java-ee
我一直忙于在GlassFish 3.1上设置身份验证,特别是JDBC领域.我一直在假设:
我无处可配置"User_Group"表,但是我想知道服务器如何能够将用户与组匹配.不用说它没用.然而,仔细检查表明:
这是正确的,如果是这样,为什么要经历创建单独的"组"表的麻烦?由于看起来每次登录只能有一个组列表("email_address"),只是简单地将一个名为"groups"的列添加到"User"表并完全丢弃"Group"表就不那么容易了吗?
谢谢!
我不确定您配置JDBC领域的材料是什么,但它看起来不完整或不正确.以下是我用于配置JDBC领域的配置的描述.
数据库结构(作为DDL语句):
USERS表
CREATE TABLE USERS (
USERID VARCHAR(50) NOT NULL,
PASSWORD VARCHAR(128) NOT NULL
);
--//@UNDO
DROP TABLE USERS;
Run Code Online (Sandbox Code Playgroud)
GROUPS表
CREATE TABLE GROUPS (
GROUPID VARCHAR(20) NOT NULL
);
--//@UNDO
DROP TABLE GROUPS;
Run Code Online (Sandbox Code Playgroud)
USERS_GROUPS联接表
CREATE TABLE USERS_GROUPS (
GROUPID VARCHAR(20) NOT NULL,
USERID VARCHAR(50) NOT NULL
);
--//@UNDO
DROP TABLE USERS_GROUPS;
Run Code Online (Sandbox Code Playgroud)
Glassfish JDBCRealm配置片段来自domain.xml:
<auth-realm name="MyRealm" classname="com.sun.enterprise.security.auth.realm.jdbc.JDBCRealm">
<property description="null" name="jaas-context" value="jdbcRealm"></property>
<property name="encoding" value="Hex"></property>
<property description="null" name="password-column" value="PASSWORD"></property>
<property name="datasource-jndi" value="jdbc/myDS"></property>
<property name="group-table" value="USERS_GROUPS"></property>
<property name="user-table" value="USERS"></property>
<property description="null" name="group-name-column" value="GROUPID"></property>
<property name="digest-algorithm" value="SHA-512"></property>
<property description="null" name="user-name-column" value="USERID"></property>
</auth-realm>
Run Code Online (Sandbox Code Playgroud)
注意,该group-name-column属性的值为GROUPID,映射到GROUPID连接表的列USERS_GROUPS而不是组表GROUPS.这是因为JDBCRealm发出以下SQL语句(如果您反编译com.sun.enterprise.security.auth.realm.jdbc.JDBCRealm该类):
密码查询,用户Id是从DigestLoginModule传递的参数:
SELECT <passwordColumn> FROM <userTable> WHERE <userNameColumn> = ?
Run Code Online (Sandbox Code Playgroud)
组查询,用户ID作为参数传递:
SELECT <groupNameColumn> FROM <groupTable> WHERE <groupTableUserNameColumn> = ?;
Run Code Online (Sandbox Code Playgroud)
当您考虑第二个查询的结构时,很明显组表必须包含映射到组ID的用户ID(这会导致映射到多个组的用户的组数据重复),或组表必须是将用户映射到组的连接表.
| 归档时间: |
|
| 查看次数: |
5949 次 |
| 最近记录: |