2011-05-11 13 views
8

Hola, estoy usando jackrabbit incrustado con tomcat. Quería cambiar la contraseña predeterminada para el usuario administrador a otra cosa para que sea segura.Cómo cambiar la contraseña de administrador en jackrabbit

Vi en repository.xml lugar para actualizar adminId a ID diferente pero por defecto toma la misma contraseña que el ID de usuario. también alguien puede ayudar a establecer una contraseña para diferentes ID de usuario.

Gracias Manisha

Respuesta

1

https://cwiki.apache.org/confluence/display/SLING/FAQ

desde el enlace:

Utilizando el UserManager:

curl \ -F"oldPwd=admin" \ -F"newPwd=Fritz" \ -F"newPwdConfirm=Fritz" \ http://admin:[email protected]:8080/system/userManager/user/admin.changePassword.html

También tendrá que establecer que la contraseña en el Felix consola de administración web (/ system/console/configMgr) en "Apache Sling Embedded JCR Repository". Esto es utilizado por Sling para crear una sesión JCR de administrador (utilizando SlingRepository.loginAdministrative()) para los componentes que necesitan tener acceso completo al repositorio.

Nota: Solo después de reiniciar el marco, la contraseña anterior se invalidará (a partir del 09-11-10).

Nota: según el módulo de inicio de sesión utilizado en Jackrabbit, es posible que la contraseña no se compruebe (SimpleLoginModule, estándar en Jackrabbit < = 1.4). Desde Jackrabbit 1.5, DefaultLoginModule brinda soporte total al usuario.

+0

La pregunta es sobre jackrabbit solamente, no apache sling – lisak

2

Por lo que yo sé, no existe un método simple para cambiar la contraseña de administrador en Jackarbbit. Al utilizar DefaultLoginModule, las contraseñas se almacenan en el espacio de trabajo de "seguridad" en una propiedad protegida, por lo que no puede cambiarlas. Pero puede usar Jackrabbit ACL API methods desde Java. pude cambiar la contraseña con una simple clase Java, así:

import org.apache.jackrabbit.api.JackrabbitSession; 
import org.apache.jackrabbit.api.security.user.Authorizable; 
import org.apache.jackrabbit.api.security.user.User; 
import org.apache.jackrabbit.api.security.user.UserManager; 
import org.apache.jackrabbit.core.TransientRepository; 

import javax.jcr.Repository; 
import javax.jcr.RepositoryException; 
import javax.jcr.Session; 
import javax.jcr.SimpleCredentials; 
import java.io.File; 

public class Main { 

    public static void main(String[] args) { 
     Repository repository = new TransientRepository(new File("path_to_jackrabbit_home_dir")); 
     try { 
      Session session = repository.login(new SimpleCredentials("admin", "admin".toCharArray())); 

      UserManager userManager = ((JackrabbitSession) session).getUserManager(); 
      Authorizable authorizable = userManager.getAuthorizable("admin"); 

      ((User) authorizable).changePassword("newpassword"); 

      session.save(); 
      session.logout(); 
     } catch (RepositoryException e) { 
      System.out.println("Auth error."); 
      e.printStackTrace(); 
     } 
    } 
} 

Ver también: http://jackrabbit.510166.n4.nabble.com/Doubt-with-username-and-password-td3173401.html

0

He intentado el método de Emanuele, y también seguí algunas de las instrucciones que se encuentran en este post : http://jackrabbit.510166.n4.nabble.com/Doubt-with-username-and-password-td3173401.html

Nada funcionó para mí. Ni las herramientas jcr: SPT JCR Manager, jackrabbitexplorer, Toromiro, JCR Explorer o phpcr-browser.

My Jackrabbit webapp (3.0-SNAPSHOT) se implementa en un tomcat7, con aws como almacén de datos y derby como administrador de persistencia.

Después de luchar durante varias horas, la única solución que funcionó para mí estaba invocando este archivo JSP simple, previamente colocada en la raíz de la aplicación web:

<%@ page import="org.apache.jackrabbit.api.JackrabbitSession, 
        org.apache.jackrabbit.api.security.user.Authorizable, 
        org.apache.jackrabbit.api.security.user.User, 
        org.apache.jackrabbit.api.security.user.UserManager, 
        org.apache.jackrabbit.core.TransientRepository, 
        javax.jcr.Repository, 
        javax.jcr.Session, 
        javax.jcr.SimpleCredentials, 
        java.io.File, 
        org.apache.jackrabbit.commons.JcrUtils, 
        org.apache.jackrabbit.j2ee.RepositoryAccessServlet" 
%> 
<% 

Repository repository; 
try { 
    repository = RepositoryAccessServlet.getRepository(pageContext.getServletContext()); 
    Session jackrabbitSession = repository.login(new SimpleCredentials("admin", "oldpass".toCharArray())); 

      UserManager userManager = ((JackrabbitSession) jackrabbitSession).getUserManager(); 
      Authorizable authorizable = userManager.getAuthorizable("admin"); 

      ((User) authorizable).changePassword("newpass"); 

      jackrabbitSession.save(); 
      jackrabbitSession.logout();  

} catch (Throwable e) { 
    %><jsp:forward page="bootstrap/error.jsp"/><% 
} 

request.setAttribute("title", "Apache Jackrabbit JCR Server"); 
%> 
<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>JSP Page</title> 
    </head> 
    <body> 
     <h1>Hello World!</h1> 
    </body> 
</html> 

Aunque es similar a la respuesta de Emanuele, la única manera de en realidad podría cambiar la contraseña de administrador actual que estaba recuperando el repositorio usando org.apache.jackrabbit.j2ee.RepositoryAccessServlet.

Cuestiones relacionadas