Security 使用WildFly 8实现Java EE Web安全

Security 使用WildFly 8实现Java EE Web安全,security,jakarta-ee,hash,wildfly-8,Security,Jakarta Ee,Hash,Wildfly 8,我正试图在一个简单的web应用程序上实现安全性,但一直未能正确实现 我让DataSource SecurityTestDS正常工作。 在standalone.xml中,我有: <default-security-domain value="jdbc-security-domain"/> <security-domain name="jdbc-security-domain" cache-type="default"> <authentication>

我正试图在一个简单的web应用程序上实现安全性,但一直未能正确实现

我让DataSource SecurityTestDS正常工作。 在standalone.xml中,我有:

<default-security-domain value="jdbc-security-domain"/>
<security-domain name="jdbc-security-domain" cache-type="default">
    <authentication>
        <login-module code="Database" flag="required">
        <!--<login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required">-->
            <module-option name="dsJndiName" value="java:jboss/datasources/SecurityTestDS"/>
            <module-option name="principalsQuery" value="select password from cb_users where username = ?"/>
            <module-option name="rolesQuery" value="select groupname Roles from cb_groups where username = ?"/>
            <module-option name="hashAlgorithm" value="MD5"/>
            <module-option name="hashEncoding" value="base64"/>                        
            <module-option name="unauthenticatedIdentity" value="guest"/>
        </login-module>
    </authentication>
</security-domain>
我使用该片段生成插入数据库的哈希

System.out.println(DatatypeConverter.printHexBinary(MessageDigest.getInstance("MD5").digest("admin".getBytes("UTF-8"))));

不幸的是,访问/contextRoot/protected/*始终会返回登录页面。所有尝试将用户名/密码识别为user/admin或admin/admin的操作都会从loginError.jsp返回无效的用户名或密码以及任何服务器日志。任何帮助都将不胜感激

您的rolesQuery值应如下所示:

select groupname, 'Roles' from cb_groups where username = ?
您将了解如何设计数据库身份验证模块选项。

对于初学者:
<form action="j_security_check" method=post>
    <p>
        <strong>Username:</strong>
        <input type="text" name="j_username" size="25">
    <p>

    <p>
        <strong>Password: </strong>
        <input type="password" size="15" name="j_password">
    <p>

    <p>
        <input type="submit" value="Submit">
        <input type="reset" value="Reset">
</form>
<h2>Invalid user name or password.</h2>
CREATE TABLE `cb_groups` (
  `groupname` varchar(255) NOT NULL,
  `username` varchar(255) NOT NULL,
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`ID`),
  UNIQUE KEY `ID_UNIQUE` (`ID`)
);

INSERT INTO `cb_groups` VALUES ('admin','admin',1),('user','user',2);

CREATE TABLE `cb_users` (
  `username` varchar(255) NOT NULL,
  `password` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`username`)
);

INSERT INTO `cb_users` VALUES ('admin','21232F297A57A5A743894A0E4A801FC3'),('user','21232F297A57A5A743894A0E4A801FC3');
System.out.println(DatatypeConverter.printHexBinary(MessageDigest.getInstance("MD5").digest("admin".getBytes("UTF-8"))));
select groupname, 'Roles' from cb_groups where username = ?