2015-07-31 1 views
0

Всякий раз, когда я попытался получить доступ к корневому узлу в JCR сессии я сталкиваюсь за исключениемjavax.jcr.AccessDeniedException с Apache Oak с MongoDB на JBoss Wildfly

javax.jcr.AccessDeniedException: Корневой узел не доступен

у нас есть следующие настройки: JBoss wildfly в качестве сервера приложений, апач дубовой 1.3.2 и мы управляем JCR сессии с использованием JcrTemplate от Spring Framework, используя код:

jcrTemplate.execute(new JcrCallback() { 
         @Override 
         public Object doInJcr(Session session) throws IOException, RepositoryException { 
          Node rootNode = session.getRootNode(); 
} 
    } 

Несмотря на то, что в модульном тесте у меня нет проблем с доступом к корневому узлу в среде сервера приложений, я столкнулся с отказом доступа.

Я упоминаю, что для создания фабрики сеансов JCR требуется имя пользователя и пароль, которые делегированы компоненту JAAS, который определен на сервере приложений. Я уже добавил имя пользователя, используя скрипт add-user от JBoss. Еще одно упоминание о том, что дуб Apache использует MongoDB, за исключением того, что в JBoss не было никакой настройки. Управление всеми соединениями осуществляется с помощью драйвера Java monogodb, который находится в пути класса приложения.

У вас есть предложения по данной проблеме? Если вам нужно получить подробную информацию, не стесняйтесь спросить

Благодаря

+0

способ предоставления доступа на корневом узле, чтобы настроить внутри JBoss, в это файл конфигурации домена безопасности, который будет обрабатывать вызов JAAS, который Apache Oak будет сделать, чтобы получить пользователь. I _jboss 8.2.0_ Я настроил один, но, похоже, не принимаю его. Обходной задачей является настройка пользовательского поставщика безопасности для дуба apache. Что-то вроде этого: 'Jcr jcr = new Jcr (новый Oak (nodeStore)); // настройка безопасности jcr.with (configureSecurityProvider()); ' – dumitru

ответ

0

образом, чтобы предоставить доступ на корневом узле, чтобы настроить внутри JBoss, в это файл конфигурации домена безопасности, который будет обрабатывать вызов JAAS, какой Apache Oak сделают, чтобы получить пользователя. I jboss 8.2.0 Я настроил один, но, похоже, не принял его. Обходной задачей является настройка пользовательского поставщика безопасности для дуба apache. Что-то вроде этого:

Jcr jcr = new Jcr(new Oak(nodeStore)); // configure security jcr.with(configureSecurityProvider());

Тогда вы должны предоставить разрешение администратора для вашего JCR пользователя, как это, в вашем configureSecurityProvider()) способом, как это (обратите внимание на класс PermissionConstants с различными разрешениями):

Set<String> adminNames = new HashSet<String>(); adminNames.add(environment.getProperty("jcr.user")); ConfigurationParameters configurationParameters = ConfigurationParameters.of(PermissionConstants.PARAM_ADMINISTRATIVE_PRINCIPALS, adminNames); SecurityProvider securityProvider = new SecurityProviderImpl(); AuthorizationConfigurationImpl authorizationConfiguration = AuthorizationConfigurationImpl.class.cast( securityProvider.getConfiguration(AuthorizationConfiguration.class)); authorizationConfiguration.setParameters(configurationParameters);

 Смежные вопросы

  • Нет связанных вопросов^_^