Authentification JBoss Portal
Bonjour,
je suis actuellement en stage et je dois développer un portail pour une entreprise en utilisant JBoss Portal.
Depuis quelques jours je suis bloqué sur un problème que je n'arrive pas à résoudre. Il éxiste déjà un portail en place avec une authentification faite grâce à une valve Tomcat, j'aimerai pouvoir utiliser cette valve afin d'être reconnu directement dans le portail JBoss avec les droits associés aux utilisateurs.
J'aimerai dans un premier temps expérimenté avec un petite valve qui me permettrai de me connecter en forçant la connexion en tant qu'administrateur. J'ai donc créer un classe java toute simple :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
package com.portal.security;
import java.io.IOException;
import java.security.Principal;
import javax.servlet.ServletException;
import org.apache.catalina.Authenticator;
import org.apache.catalina.Realm;
import org.apache.catalina.Session;
import org.apache.catalina.connector.Request;
import org.apache.catalina.connector.Response;
import org.apache.catalina.valves.ValveBase;
public class PortalAuthenticator extends ValveBase implements Authenticator
{
public void invoke(Request request, Response response) throws IOException, ServletException
{
Realm realm = null;
Principal principal = null;
if (getContainer() != null) {
realm = getContainer().getRealm();
}
System.out.println(realm.toString());
if (realm != null){
principal = realm.authenticate("admin", "admin");
}
if (principal != null) {
System.out.println("principal " + principal.getName());
request.setUserPrincipal(principal);
request.setAuthType("SSO");
Session session = request.getSessionInternal(principal != null);
}
getNext().invoke(request, response);
return;
}
} |
et j'ai modifié le fichier jboss-portal-2.6.4/server/default/deploy/jboss-web.deployer/server.xml
en y ajoutant la valve :
Code:
1 2
|
<Valve className="com.portal.security.PortalAuthenticator"/> |
J'ai laissé le realm par défaut de JBoss c'est à dire :
Code:
1 2 3 4 5
|
<Realm className="org.jboss.web.tomcat.security.JBossSecurityMgrRealm"
certificatePrincipal="org.jboss.security.auth.certs.SubjectDNMapping"
allRolesMode="authOnly" debug="2"
/> |
Le problème c'est que le Principal est toujours null.
Voilà un bout du log du serveur qui concerne le moment où les portlets se chargent.
Citation:
2008-03-06 14:36:51,145 TRACE [org.jboss.web.tomcat.security.JBossSecurityMgrRealm] Begin authenticate, username=admin
2008-03-06 14:36:51,146 TRACE [org.jboss.ejb3.naming.SimpleMultiplexer] contextClassLoader = org.jboss.mx.loading.UnifiedClassLoader3@152e961{ url=file:/home/swingApps/jboss-portal-2.6.4/server/default/deploy/jboss-web.deployer/ ,addedOrder=6} ctxOne = org.jnp.interfaces.NamingContext@a294ec
2008-03-06 14:36:51,146 TRACE [org.jboss.web.tomcat.security.JBossSecurityMgrRealm] No security context for authenticate(String, String)
2008-03-06 14:36:51,146 DEBUG [org.apache.catalina.authenticator.AuthenticatorBase] Security checking request GET /portal/auth/portal/DelfingenPortal/default2008-03-06 14:36:51,146 DEBUG [org.apache.catalina.realm.RealmBase] Checking constraint 'SecurityConstraint[Authenticated]' against GET /auth/portal/DelfingenPortal/default --> true
2008-03-06 14:36:51,146 DEBUG [org.apache.catalina.realm.RealmBase] Checking constraint 'SecurityConstraint[Secure]' against GET /auth/portal/DelfingenPortal/default --> false
2008-03-06 14:36:51,146 DEBUG [org.apache.catalina.realm.RealmBase] Checking constraint 'SecurityConstraint[Secure+Authenticated]' against GET /auth/portal/DelfingenPortal/default --> false
2008-03-06 14:36:51,146 DEBUG [org.apache.catalina.realm.RealmBase] Checking constraint 'SecurityConstraint[Authenticated]' against GET /auth/portal/DelfingenPortal/default --> true
2008-03-06 14:36:51,146 DEBUG [org.apache.catalina.realm.RealmBase] Checking constraint 'SecurityConstraint[Secure]' against GET /auth/portal/DelfingenPortal/default --> false
2008-03-06 14:36:51,146 DEBUG [org.apache.catalina.realm.RealmBase] Checking constraint 'SecurityConstraint[Secure+Authenticated]' against GET /auth/portal/DelfingenPortal/default --> false
2008-03-06 14:36:51,146 DEBUG [org.apache.catalina.authenticator.AuthenticatorBase] Calling hasUserDataPermission()
2008-03-06 14:36:51,146 DEBUG [org.apache.catalina.realm.RealmBase] User data constraint has no restrictions
2008-03-06 14:36:51,146 DEBUG [org.apache.catalina.authenticator.AuthenticatorBase] Calling authenticate()
2008-03-06 14:36:51,146 DEBUG [org.apache.catalina.authenticator.FormAuthenticator] Save request in session '0D126B007958F72D979642C38AE79380'
2008-03-06 14:36:51,147 TRACE [org.apache.catalina.core.StandardWrapper] Returning non-STM instance
2008-03-06 14:36:51,147 TRACE [org.jboss.web.tomcat.security.RunAsListener] jsp, runAs: null
2008-03-06 14:36:51,147 TRACE [org.jboss.web.tomcat.security.RunAsListener] jsp, runAs: null
Si quelqu'un a une idée pour corriger ce problème ce serait super
Merci.