Pour une raison quelconque, je ne peux pas me connecter à mon application en utilisant Wildfly, Primefaces et JAAS. Je ne l'ai pas essayé dans d'autres versions comme JBoss 7 AS parce que je veux voir ça fonctionner sur Wildfly. Après tentative de connexion en utilisant admin pour j_username et 1234 pour j_password, il redirige vers la page d'erreur de connexion. Je ne peux pas comprendre pourquoi.Wildfly avec jaas entraîne toujours une erreur de connexion
hachage MD5 econding il est juste avec le mot de passe généré par postgres
J'Acess ce JDNI et exécuter quelques querys de code Java, en concluant qu'il fonctionne.
String DATASOURCE_CONTEXT = "java:jboss/datasources/zephyrplace-ds";
Connection result = null;
try {
Context initialContext = new InitialContext();
if (initialContext == null){
System.out.println("JNDI problem. Cannot get InitialContext.");
}
DataSource datasource = (DataSource)initialContext.lookup(DATASOURCE_CONTEXT);
if (datasource != null) {
result = datasource.getConnection();
}
else {
System.out.println("Failed to lookup datasource.");
}
}
catch (NamingException ex) {
System.out.println("Cannot get connection: " + ex);
}
catch(SQLException ex){
System.out.println("Cannot get connection: " + ex);
}
return result;
login.xhtml (primefaces):
<h:form id="login" onsubmit="document.getElementById('login').action='j_security_check';" prependId="false">
<ul class="nav navbar-nav navbar-right">
<li>
<center>
<p:inputText name="j_username" placeholder="Usuario" style="margin-top:10px;margin-left:10px;" size="15" id="user" value="#{usuarioBean.usuario.usuario}" rendered="#{empty usuarioBean.usuarioLogado}"></p:inputText>
</center>
</li>
<li>
<center>
<p:inputText id="j_password" name="j_password" placeholder="Senha" style="margin-top:10px;margin-left:10px;" size="15" type="password" value="#{usuarioBean.usuario.senha}" rendered="#{empty usuarioBean.usuarioLogado}"></p:inputText>
</center>
</li>
<li>
<center>
<p:commandButton style="margin-top:10px;margin-left:10px;" value="Entrar" rendered="#{empty usuarioBean.usuarioLogado}" ajax="false"></p:commandButton>
</center>
</li>
</ul>
</h:form>
jboss-web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
<security-domain>zephyrplace-security-domain</security-domain>
</jboss-web>
standalone.xml:
<security-domains>
<security-domain name="zephyrplace-security-domain" cache-type="default">
<authentication>
<login-module code="Database" flag="required">
<module-option name="dsJndiName" value="java:jboss/datasources/zephyrplace-ds"/>
<module-option name="principalsQuery" value="select pass from users where name=?"/>
<module-option name="rolesQuery" value="select role_name from user_roles where user_name = ?"/>
<module-option name="hashAlgorithm" value="MD5"/>
<module-option name="hashEncoding" value="base16"/>
</login-module>
</authentication>
</security-domain>
</security-domains>
postgres:
CREATE TABLE "users"
(
"name" character varying(50),
pass character varying(50)
)
WITH (
OIDS=FALSE
);
ALTER TABLE "users" OWNER TO postgres;
CREATE TABLE user_roles
(
user_name character varying(50),
role_name character varying
)
WITH (
OIDS=FALSE
);
ALTER TABLE user_roles OWNER TO postgres;
INSERT INTO users("name", pass) VALUES ('admin', MD5('1234'));
INSERT INTO user_roles(user_name, role_name) VALUES ('admin', 'ADMIN');
web.xml:
<!-- Protected Areas -->
<security-constraint>
<web-resource-collection>
<web-resource-name>Only admins</web-resource-name>
<url-pattern>/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>ADMIN</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>Users and admins</web-resource-name>
<url-pattern>/index/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>ADMIN</role-name>
<role-name>USER</role-name>
</auth-constraint>
</security-constraint>
<!-- Allowed Roles -->
<security-role>
<role-name>ADMIN</role-name>
</security-role>
<security-role>
<role-name>USER</role-name>
</security-role>
<!-- Login Prompt -->
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login/login.xhtml</form-login-page>
<form-error-page>/login/login-error.xhtml</form-error-page>
</form-login-config>
</login-config>