2011-05-11 4 views
8

안녕하세요, tomcat에 jackrabbit가 포함되어 있습니다. 나는 admin 사용자의 기본 암호를 다른 것으로 변경하여 안전하고 안전하게 유지하려고했습니다.jackrabbit에서 관리자 비밀번호를 변경하는 방법

내가 repositoryId에서 adminId를 다른 ID로 업데이트하는 것을 보았지만 기본적으로 사용자 아이디와 동일한 비밀번호를 사용합니다. 다른 사용자 ID에 암호를 설정하는 데 도움을 줄 수 있습니다.

감사 Manisha 링크에서

답변

1

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

:

userManager 사용 : 또한 펠릭스 웹 관리 콘솔 (에 해당 암호를 설정해야합니다

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

를/system/console/configMgr)에서 "Apache Sling Embedded JCR 저장소"아래에 있습니다. SlingRepository.loginAdministrative()를 사용하여 리포지토리에 대한 전체 액세스가 필요한 구성 요소에 대한 관리 JCR 세션을 만드는 데 사용됩니다.

참고 : 프레임 워크를 다시 시작한 후에 만 ​​이전 암호가 유효하지 않게됩니다 (09-11-10 기준).

참고 : Jackrabbit에서 사용되는 로그인 모듈에 따라 암호가 전혀 선택되지 않을 수도 있습니다 (SimpleLoginModule, Jackrabbit < = 1.4의 표준). Jackrabbit 1.5부터, DefaultLoginModule은 완전한 사용자 지원을 제공합니다.

+0

질문은 jackrabbit 전용이며, 아파치 슬링이 아닙니다. – lisak

2

내가 아는 한 Jackarbbit에서 관리자 비밀번호를 변경하는 간단한 방법은 없습니다. DefaultLoginModule을 사용할 때 비밀번호는 보호 된 속성의 "보안"작업 영역에 저장되므로 변경할 수 없습니다. 하지만 Java에서 Jackrabbit ACL API methods을 사용할 수 있습니다. 나는 다음과 같이 간단한 자바 클래스와 암호를 변경 할 수 있었다 : 또한

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(); 
     } 
    } 
} 

참조 : http://jackrabbit.510166.n4.nabble.com/Doubt-with-username-and-password-td3173401.html

0

내가 에마의 방법을 시도하고, 또한이 게시물의 지침 중 일부를 따랐습니다 : http://jackrabbit.510166.n4.nabble.com/Doubt-with-username-and-password-td3173401.html

아무 것도 효과가 없었습니다. jcr 도구는 모두 : SPT JCR Manager, jackrabbitexplorer, Toromiro, JCR Explorer 또는 phpcr-browser이 아닙니다.

My Jackrabbit webapp (3.0-SNAPSHOT)은 tomcat7에 배포되며 aws는 데이터 저장소로, derby는 지속성 관리자로 배포됩니다.

몇 시간 동안 고민 후, 나를 위해 일한 유일한 해결책은 이전에 웹 응용 프로그램 루트에 배치이 간단한 JSP 파일을 호출했다 : 에마의 대답은, 유일한 방법은 비슷하지만

<%@ 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> 

를 I org.apache.jackrabbit.j2ee.RepositoryAccessServlet을 사용하여 저장소를 검색하는 현재 관리자 비밀번호를 실제로 변경할 수 있습니다.

관련 문제