【发布时间】:2015-04-16 14:18:43
【问题描述】:
我正在尝试让基于表单的身份验证在 Jboss EAP 6.3 和 Oracle 11g 中工作。 但无论输入什么,登录总是失败。
我在standalone.xml中配置了一个安全域:
<security-domain name="employee-rooster" cache-type="default">
<authentication>
<login-module code="Database" flag="required">
<module-option name="dsJndiName" value="java:jboss/datasources/OracleDS"/>
<module-option name="principalsQuery" value="SELECT PASSWORD FROM USERS WHERE USERNAME = ?"/>
<module-option name="rolesQuery" value="SELECT R.NAME, 'Roles' FROM USERS_ROLES UR INNER JOIN ROLES R ON R.ID = UR.ROLE_ID INNER JOIN USERS U ON U.ID = UR.USER_ID WHERE U.USERNAME = ?"/>
</login-module>
</authentication>
<authorization>
<policy-module code="admin" flag="required"/>
</authorization>
<audit>
<provider-module code="LogAuditProvider"/>
</audit>
</security-domain>
配置应用程序 web.xml:
<web-app>
<security-constraint>
<display-name>auth</display-name>
<web-resource-collection>
<web-resource-name>Secure Content</web-resource-name>
<url-pattern>/register.do/this_is-it</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<realm-name>employee-rooster</realm-name>
<form-login-config>
<form-login-page>/loginForm.jsp</form-login-page>
<form-error-page>/loginError.jsp</form-error-page>
</form-login-config>
</login-config>
<security-role>
<role-name>admin</role-name>
</security-role>
</web-app>
配置应用程序 jboss-web.xml:
<jboss-web>
<security-domain>employee-rooster</security-domain>
<use-jboss-authorization>true</use-jboss-authorization>
</jboss-web>
并在 import.sql 中为我的表添加了一些值:
CREATE TABLE USERS (ID INT, USERNAME VARCHAR(32), PASSWORD VARCHAR(32));
CREATE TABLE ROLES (ID INT, NAME VARCHAR(20));
CREATE TABLE USERS_ROLES (USER_ID INT, ROLE_ID INT);
INSERT INTO USERS (ID, USERNAME, PASSWORD) VALUES (1, 'admin', 'admin');
INSERT INTO ROLES (ID, NAME) VALUES (1, 'admin');
INSERT INTO USERS_ROLES (USER_ID, ROLE_ID) VALUES (1,1);
INSERT INTO USERS (ID, USERNAME, PASSWORD) VALUES (2, 'guest', 'guest');
INSERT INTO ROLES (ID, NAME) VALUES (2, 'guest');
INSERT INTO USERS_ROLES (USER_ID, ROLE_ID) VALUES (2,2);
但是当我部署应用程序时出现此错误:
JBAS014777: Services which failed to start: service jboss.server.controll
er.management.security_realm.employee-rooster.properties_authentication: org.jbo
ss.msc.service.StartException in service jboss.server.controller.management.secu
rity_realm.employee-rooster.properties_authentication: JBAS015228: Unable to loa
d properties
登录总是失败,我怀疑这就是原因。 是什么导致了这个错误?
【问题讨论】:
-
尝试将 TRACE 日志记录添加到 JBoss Security,如此处所述developer.jboss.org/wiki/SecurityFAQ
-
您确定启动JBoss时使用了正确的standalone.xml文件吗?尝试使用 ./standalone.sh --server-config=standalone-full.xml &
-
@ozOli 我在windows上,我该怎么办?
-
@ozOli 该教程似乎适用于旧版本,因为我没有那里提到的文件或文件夹。
-
policy-module code="admin"在哪里?日志中还有其他错误吗?