Yaniv Dary has uploaded a new change for review. Change subject: reports: added pt_BR to locales list (#918075) ......................................................................
reports: added pt_BR to locales list (#918075) Bug-Url: https://bugzilla.redhat.com/918075 Change-Id: I7f91af37264b511d1e84277b68b39c22a89103ab Signed-off-by: Yaniv Dary <[email protected]> --- A server-customizations/WEB-INF/applicationContext-security.xml 1 file changed, 800 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-reports refs/changes/65/13165/1 diff --git a/server-customizations/WEB-INF/applicationContext-security.xml b/server-customizations/WEB-INF/applicationContext-security.xml new file mode 100644 index 0000000..da8d254 --- /dev/null +++ b/server-customizations/WEB-INF/applicationContext-security.xml @@ -0,0 +1,800 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<beans xmlns="http://www.springframework.org/schema/beans" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:util="http://www.springframework.org/schema/util" + xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd + http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd"> + + + <!-- ======================== AUTHENTICATION ======================= --> + <bean id="authenticationManager" class="org.springframework.security.providers.ProviderManager"> + <property name="providers"> + <list> + <!-- not on by default <ref local="ldapAuthenticationProvider"/> --> + <ref bean="${bean.daoAuthenticationProvider}"/> + <ref bean="anonymousAuthenticationProvider"/> + <!--ref local="jaasAuthenticationProvider"/--> + </list> + </property> + </bean> + + <bean id="anonymousAuthenticationProvider" class="org.springframework.security.providers.anonymous.AnonymousAuthenticationProvider"> + <property name="key"><value>foobar</value></property> + </bean> + + <bean id="daoAuthenticationProvider" class="org.springframework.security.providers.dao.DaoAuthenticationProvider"> + <!-- jdbcDaoImpl --> + <!-- <property name="userDetailsService"><ref bean="inMemoryDaoImpl"/></property> --> + <property name="userDetailsService"><ref bean="${bean.internalUserAuthorityService}"/></property> + <property name="passwordEncoder"><ref local="passwordEncoder"/></property> + </bean> + + <bean id="passwordEncoder" class="com.jaspersoft.jasperserver.api.metadata.common.service.impl.PasswordCipherer" lazy-init="false"> + <property name="allowEncoding"><value>true</value></property> + <property name="keyInPlainText"><value>false</value></property> + <property name="secretKey"><value>0xC8 0x43 0x29 0x49 0xAE 0x25 0x2F 0xA1 0xC1 0xF2 0xC8 0xD9 0x31 0x01 0x2C 0x52 0x54 0x0B 0x5E 0xEA 0x9E 0x37 0xA8 0x61</value></property> + <property name="secretKeyAlgorithm"><value>DESede</value></property> + <property name="cipherTransformation"><value>DESede/CBC/PKCS5Padding</value></property> + </bean> + + <!-- + <bean id="jaasAuthenticationProvider" class="org.springframework.security.providers.jaas.JaasAuthenticationProvider"> + <property name="loginConfig"> + <value>/WEB-INF/login.conf</value> + </property> + <property name="loginContextName"> + <value>FileLogin</value> + </property> + <property name="callbackHandlers"> + <list> + <bean class="org.springframework.security.providers.jaas.JaasNameCallbackHandler"/> + <bean class="org.springframework.security.providers.jaas.JaasPasswordCallbackHandler"/> + </list> + </property> + <property name="authorityGranters"> + <list> + <bean class="org.appfuse.web.JaasAuthorityGranter"/> + </list> + </property> + </bean> + --> + <!-- + <bean id="inMemoryDaoImpl" class="org.springframework.security.userdetails.memory.InMemoryDaoImpl"> + <property name="userMap"> + <value> + tomcat=536c0b339345616c1b33caf454454d8b8a190d6c,ROLE_USER + springlive=2a9152cff1d25b5bbaa3e5fbc7acdc6905c9f251,ROLE_USER + </value> + </property> + </bean> + --> + + <!-- + + For LDAP authentication + + <bean id="ldapContextSource" class="org.springframework.security.ldap.DefaultSpringSecurityContextSource"> + <constructor-arg value="ldap://scopeserv1:389/dc=panscopic,dc=com"/> + --> + <!-- + You may not need the next properties + <property name="userDn"><value>uid=admin,ou=system</value></property> + <property name="password"><value>secret</value></property> + --> + <!-- + </bean> + --> + + <!-- + For LDAP authentication + This bean is not used by default + + <bean id="userSearch" + class="org.springframework.security.ldap.search.FilterBasedLdapUserSearch"> + <constructor-arg index="0"> + <value></value> + </constructor-arg> + <constructor-arg index="1"> + <value>(uid={0})</value> + </constructor-arg> + <constructor-arg index="2"> + <ref local="ldapContextSource" /> + </constructor-arg> + <property name="searchSubtree"> + <value>true</value> + </property> + </bean> + + --> + + <!-- + For LDAP authentication + + <bean id="ldapAuthenticationProvider" class="org.springframework.security.providers.ldap.LdapAuthenticationProvider"> + <constructor-arg> + <bean class="org.springframework.security.providers.ldap.authenticator.BindAuthenticator"> + <constructor-arg><ref local="ldapContextSource"/></constructor-arg> + <!- -property name="userDnPatterns"><list><value>uid={0}</value></list></property- -> + <property name="userSearch" ref="userSearch"/> + </bean> + </constructor-arg> + <constructor-arg> + <bean class="org.springframework.security.ldap.populator.DefaultLdapAuthoritiesPopulator"> + <constructor-arg index="0"><ref local="ldapContextSource"/></constructor-arg> + <constructor-arg index="1"><value></value></constructor-arg> + <property name="groupRoleAttribute"><value>cn</value></property> + <property name="groupSearchFilter"><value>(&(uniqueMember={0})(objectclass=groupofuniquenames))</value></property> + <property name="searchSubtree"><value>true</value></property> + </bean> + </constructor-arg> + </bean> + --> + + + <!-- Automatically receives AuthenticationEvent messages --> + <bean id="loggerListener" class="org.springframework.security.event.authentication.LoggerListener"/> + + <bean id="userLocalesList" class="com.jaspersoft.jasperserver.war.common.LocalesListImpl"> + <property name="locales"> + <list> + <value type="java.util.Locale">en</value> + <value type="java.util.Locale">fr</value> + <value type="java.util.Locale">it</value> + <value type="java.util.Locale">es</value> + <value type="java.util.Locale">de</value> + <value type="java.util.Locale">ro</value> + <value type="java.util.Locale">ja</value> + <value type="java.util.Locale">zh_TW</value> + <value type="java.util.Locale">zh_CN</value> + <value type="java.util.Locale">pt_BR</value> + </list> + </property> + </bean> + + <!-- + <bean id="rememberMeProcessingFilter" class="org.springframework.security.ui.rememberme.RememberMeProcessingFilter"> + <property name="authenticationManager"><ref local="authenticationManager"/></property> + <property name="rememberMeServices"><ref local="rememberMeServices"/></property> + </bean> + + <bean id="rememberMeServices" class="org.springframework.security.ui.rememberme.TokenBasedRememberMeServices"> + <property name="userDetailsService"><ref local="inMemoryDaoImpl"/></property> + <property name="key"><value>springRocks</value></property> + </bean> + + <bean id="rememberMeAuthenticationProvider" class="org.springframework.security.providers.rememberme.RememberMeAuthenticationProvider"> + <property name="key"><value>springRocks</value></property> + </bean> + --> + + <!-- + <bean id="runAsManager" class="org.springframework.security.runas.RunAsImplAuthenticationProvider"> + <property name="key"><value>my_run_as_password</value></property> + </bean> + --> + + <bean id="requestMethodsFilter" class="org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter"/> + + <!-- Optionally, you can specify a "rolePrefix" property to change + (or remove) the ROLE_ prefix for role names. --> + <bean id="roleVoter" class="org.springframework.security.vote.RoleVoter"/> + + <!-- ===================== ACL-BASED SECURITY ==================== --> + + <!-- ACL permission masks used by this application --> + <bean id="JasperServerAclEntry.ADMINISTRATION" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean"> + <property name="staticField"> + <value>com.jaspersoft.jasperserver.api.metadata.security.JasperServerAclEntry.ADMINISTRATION</value> + </property> + </bean> + + <bean id="JasperServerAclEntry.READ_WRITE" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean"> + <property name="staticField"> + <value>com.jaspersoft.jasperserver.api.metadata.security.JasperServerAclEntry.READ_WRITE</value> + </property> + </bean> + + <bean id="JasperServerAclEntry.READ" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean"> + <property name="staticField"> + <value>com.jaspersoft.jasperserver.api.metadata.security.JasperServerAclEntry.READ</value> + </property> + </bean> + + <bean id="JasperServerAclEntry.DELETE" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean"> + <property name="staticField"> + <value>com.jaspersoft.jasperserver.api.metadata.security.JasperServerAclEntry.DELETE</value> + </property> + </bean> + + <bean id="JasperServerAclEntry.EXECUTE" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean"> + <property name="staticField"> + <value>com.jaspersoft.jasperserver.api.metadata.security.JasperServerAclEntry.EXECUTE</value> + </property> + </bean> + + <bean id="JasperServerAclEntry.NOTHING" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean"> + <property name="staticField"> + <value>com.jaspersoft.jasperserver.api.metadata.security.JasperServerAclEntry.NOTHING</value> + </property> + </bean> + + <!-- An access decision voter that reads ACL_USER_ADMIN settings --> + <bean id="aclUserAdminVoter" class="org.springframework.security.vote.BasicAclEntryVoter"> + <property name="aclManager"><ref local="aclManager"/></property> + <property name="processConfigAttribute"> + <value>ACL_USER_ADMIN</value> + </property> + <property name="processDomainObjectClass"> + <value>com.jaspersoft.jasperserver.api.metadata.common.domain.Resource</value> + </property> + <property name="requirePermission"> + <list> + <ref local="JasperServerAclEntry.ADMINISTRATION"/> + </list> + </property> + </bean> + + <!-- An access decision voter that reads ACL_USER_READ settings --> + <bean id="aclUserReadVoter" class="com.jaspersoft.jasperserver.api.metadata.security.ContextSensitiveAclEntryVoter"> + <property name="aclManager"><ref local="aclManager"/></property> + <property name="processConfigAttribute"> + <value>ACL_USER_READ</value> + </property> + <property name="processDomainObjectClass"> + <value>java.lang.String</value> + </property> + <property name="requiredPermissionsMap"> + <map> + <entry key="default"> + <list> + <ref local="JasperServerAclEntry.ADMINISTRATION"/> + <ref local="JasperServerAclEntry.READ"/> + </list> + </entry> + <entry key="execute"> + <list> + <ref local="JasperServerAclEntry.ADMINISTRATION"/> + <ref local="JasperServerAclEntry.READ"/> + <ref local="JasperServerAclEntry.EXECUTE"/> + </list> + </entry> + </map> + </property> + </bean> + + <!-- An access decision voter that reads ACL_USER_UPDATE settings --> + <bean id="aclUserUpdateVoter" class="org.springframework.security.vote.BasicAclEntryVoter"> + <property name="aclManager"><ref local="aclManager"/></property> + <property name="processConfigAttribute"> + <value>ACL_USER_UPDATE</value> + </property> + <property name="processDomainObjectClass"> + <value>com.jaspersoft.jasperserver.api.metadata.common.domain.Resource</value> + </property> + <property name="requirePermission"> + <list> + <ref local="JasperServerAclEntry.ADMINISTRATION"/> + <ref local="JasperServerAclEntry.READ_WRITE"/> + </list> + </property> + </bean> + + <!-- An access decision voter that reads ACL_USER_READ settings --> + <bean id="aclUserDeleteVoter" class="org.springframework.security.vote.BasicAclEntryVoter"> + <property name="aclManager"><ref local="aclManager"/></property> + <property name="processConfigAttribute"> + <value>ACL_USER_DELETE</value> + </property> + <property name="processDomainObjectClass"> + <value>java.lang.String</value> + </property> + <property name="requirePermission"> + <list> + <ref local="JasperServerAclEntry.ADMINISTRATION"/> + <ref local="JasperServerAclEntry.DELETE"/> + </list> + </property> + </bean> + + + <!-- An access decision manager used by the business objects --> + <bean id="aclAccessDecisionManager" class="org.springframework.security.vote.AffirmativeBased"> + <property name="allowIfAllAbstainDecisions"><value>true</value></property> + <property name="decisionVoters"> + <list> + <ref local="roleVoter"/> + <ref local="aclUserAdminVoter"/> + <ref local="aclUserUpdateVoter"/> + <!-- <ref local="aclUserCreateVoter"/> --> + <ref local="aclUserDeleteVoter"/> + <ref local="aclUserReadVoter"/> + <ref local="aclUserMoveVoter"/> + <ref local="aclUserCopyVoter"/> + <ref local="aclUserMultiCopyVoter"/> + </list> + </property> + </bean> + + + <!-- ========= ACCESS CONTROL LIST MANAGER DEFINITIONS ========= --> + + <bean id="aclManager" class="org.springframework.security.acl.AclProviderManager"> + <property name="providers"> + <list> + <ref bean="${bean.objectPermissionServiceInternal}"/> + </list> + </property> + </bean> + + <!-- ===================== METHOD-LEVEL SECURITY ==================== + Read methods: + getResource + getResourceData - Does not return a resource + getContentResourceData - Does not return a resource + getFolder + getAllFolders + getSubFolders + findResource + loadResourcesList* + loadClientResources* + getChildrenFolderName - Does not return a resource + Write methods: + saveFolder - Problems handling not existent objects... + saveResource - Problems handling not existent objects... + newResource - Not useful.... + Delete methods: + deleteResource + deleteFolder + delete - Not useful.... + --> + <bean id="hibernateRepoServiceSecurity" + class="org.springframework.security.intercept.method.aopalliance.MethodSecurityInterceptor"> + <property name="authenticationManager"><ref local="authenticationManager"/></property> + <property name="accessDecisionManager"><ref local="aclAccessDecisionManager"/></property> + <property name="afterInvocationManager"><ref local="afterInvocationManager"/></property> + <property name="objectDefinitionSource"><ref local="repositoryServiceMethodSecurity"/></property> + </bean> + + <bean id="repositoryServiceMethodSecurity" class="com.jaspersoft.jasperserver.api.common.util.spring.SimplePropertyFactoryBean"> + <property name="objectType" value="org.springframework.security.intercept.method.MethodDefinitionSource"/> + <property name="value"> + <value> + + com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryService.getResource=ACL_USER_READ + com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryService.getResources=AFTER_ACL_COLLECTION_READ + com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryService.getFolder=ACL_USER_READ + com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryService.loadResourcesList=AFTER_ACL_COLLECTION_READ + com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryService.getResourcesByIdList=AFTER_ACL_COLLECTION_READ + com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryService.loadClientResources=AFTER_ACL_COLLECTION_READ + com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryService.getAllFolders=AFTER_ACL_COLLECTION_READ + com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryService.getAllSubfolders=AFTER_ACL_COLLECTION_READ + com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryService.getSubFolders=AFTER_ACL_COLLECTION_READ + com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryService.findResource=AFTER_ACL_COLLECTION_READ + com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryService.findResources=AFTER_ACL_COLLECTION_READ + com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryService.saveFolder=ACL_USER_ADMIN,ACL_USER_UPDATE + com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryService.saveResource=ACL_USER_ADMIN,ACL_USER_UPDATE + com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryService.deleteResource=ACL_USER_DELETE + com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryService.deleteFolder=ACL_USER_DELETE + com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryService.delete=ACL_USER_DELETE + com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryService.moveFolder=ACL_USER_MOVE + com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryService.moveResource=ACL_USER_MOVE + com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryService.copyResource=ACL_USER_COPY + com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryService.copyResources=ACL_USER_MULTI_COPY + com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryService.copyFolder=ACL_USER_COPY + + + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.getResource=ACL_USER_READ + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.getResources=AFTER_ACL_COLLECTION_READ + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.getFolder=ACL_USER_READ + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.loadResourcesList=AFTER_ACL_COLLECTION_READ + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.getResourcesByIdList=AFTER_ACL_COLLECTION_READ + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.loadClientResources=AFTER_ACL_COLLECTION_READ + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.getAllFolders=AFTER_ACL_COLLECTION_READ + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.getAllSubfolders=AFTER_ACL_COLLECTION_READ + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.getSubFolders=AFTER_ACL_COLLECTION_READ + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.findResource=AFTER_ACL_COLLECTION_READ + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.findResources=AFTER_ACL_COLLECTION_READ + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.saveFolder=ACL_USER_ADMIN,ACL_USER_UPDATE + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.saveResource=ACL_USER_ADMIN,ACL_USER_UPDATE + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.deleteResource=ACL_USER_DELETE + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.deleteFolder=ACL_USER_DELETE + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.delete=ACL_USER_DELETE + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.moveFolder=ACL_USER_MOVE + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.moveResource=ACL_USER_MOVE + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.copyResource=ACL_USER_COPY + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.copyResources=ACL_USER_MULTI_COPY + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.copyFolder=ACL_USER_COPY +<!-- + For comparison, this is the analogous configuration defined inline under aclUpdateMethodSecurityInterceptor + + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.getResource=ACL_USER_UPDATE + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.getResources=AFTER_ACL_COLLECTION_UPDATE + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.getFolder=ACL_USER_UPDATE + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.loadResourcesList=AFTER_ACL_COLLECTION_UPDATE + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.getResourcesByIdList=AFTER_ACL_COLLECTION_UPDATE + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.loadClientResources=AFTER_ACL_COLLECTION_UPDATE + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.getAllFolders=AFTER_ACL_COLLECTION_UPDATE + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.getAllSubfolders=AFTER_ACL_COLLECTION_UPDATE + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.getSubFolders=AFTER_ACL_COLLECTION_UPDATE + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.saveFolder=ACL_USER_UPDATE + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.saveResource=ACL_USER_UPDATE + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.deleteResource=ACL_USER_DELETE + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.deleteFolder=ACL_USER_DELETE + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.delete=ACL_USER_DELETE + + --> + + </value> + </property> + </bean> + + <!-- + + Not used + + <bean id="hibernateRepoServiceSecurity" + class="org.springframework.security.intercept.method.aspectj.AspectJSecurityInterceptor"> + <property name="authenticationManager"><ref local="authenticationManager"/></property> + <property name="accessDecisionManager"><ref local="aclAccessDecisionManager"/></property> + <property name="afterInvocationManager"><ref local="afterInvocationManager"/></property> + <property name="objectDefinitionSource"> + <value> + com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryService.getRepoResource=ROLE_PermissionTestRoleAgain,AFTER_ACL_READ + com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryService.loadResourcesList=ROLE_PermissionTestRole,ROLE_PermissionTestRoleAgain,AFTER_ACL_COLLECTION_READ + </value> + </property> + </bean> + + <bean id="domainObjectInstanceSecurityAspect" + class="com.jaspersoft.jasperserver.api.metadata.user.service.impl.ObjectSecurityAspect" + factory-method="aspectOf"> + <property name="securityInterceptor"><ref local="hibernateRepoServiceSecurity"/></property> + </bean> + --> + + <!-- ============== "AFTER INTERCEPTION" AUTHORIZATION =========== --> + + <bean id="afterInvocationManager" class="org.springframework.security.afterinvocation.AfterInvocationProviderManager"> + <property name="providers"> + <list> + <ref local="afterAclRead"/> + <ref local="afterAclCollectionRead"/> + </list> + </property> + </bean> + + <bean id="afterInvocationManagerForUpdate" class="org.springframework.security.afterinvocation.AfterInvocationProviderManager"> + <property name="providers"> + <list> + <ref local="afterAclRead"/> + <ref local="afterAclCollectionRead"/> + <ref local="afterAclCollectionUpdate"/> + </list> + </property> + </bean> + + <!-- Processes AFTER_ACL_COLLECTION_READ configuration settings --> + + <bean id="afterAclCollectionRead" + class="org.springframework.security.afterinvocation.BasicAclEntryAfterInvocationCollectionFilteringProvider"> + <property name="aclManager"><ref local="aclManager"/></property> + <property name="requirePermission"> + <list> + <ref local="JasperServerAclEntry.ADMINISTRATION"/> + <ref local="JasperServerAclEntry.READ"/> + </list> + </property> + </bean> + + <!-- Processes AFTER_ACL_READ configuration settings --> + + <bean id="afterAclRead" class="org.springframework.security.afterinvocation.BasicAclEntryAfterInvocationProvider"> + <property name="aclManager"><ref local="aclManager"/></property> + <property name="requirePermission"> + <list> + <ref local="JasperServerAclEntry.ADMINISTRATION"/> + <ref local="JasperServerAclEntry.READ"/> + </list> + </property> + </bean> + + <!--Processes AFTER_ACL_COLLECTION_UPDATE configuration settings--> + <bean id="afterAclCollectionUpdate" class="org.springframework.security.afterinvocation.BasicAclEntryAfterInvocationCollectionFilteringProvider"> + <property name="aclManager"> + <ref local="aclManager"/> + </property> + <property name="processConfigAttribute"> + <value>AFTER_ACL_COLLECTION_UPDATE</value> + </property> + <property name="requirePermission"> + <list> + <ref local="JasperServerAclEntry.ADMINISTRATION"/> + <ref local="JasperServerAclEntry.READ_WRITE"/> + </list> + </property> + </bean> + + + <bean id="customEditorConfigurer" class="org.springframework.beans.factory.config.CustomEditorConfigurer"> + <property name="customEditors"> + <map> + <entry key="com.jaspersoft.jasperserver.api.security.FlowDefinitionSource"> + <bean class="com.jaspersoft.jasperserver.api.security.FlowDefinitionSourceEditor"/> + </entry> + <entry key="org.springframework.security.ConfigAttribute"> + <bean class="com.jaspersoft.jasperserver.api.metadata.security.ConfigAttributeEditor"/> + </entry> + </map> + </property> + </bean> + + <bean id="flowAclManager" class="org.springframework.security.acl.AclProviderManager"> + <property name="providers"> + <list> + <ref bean="${bean.objectPermissionServiceInternal}"/> + </list> + </property> + </bean> + + <bean id="flowVoter" class="com.jaspersoft.jasperserver.api.security.FlowRoleAccessVoter"> + <property name="flowAccessAttribute" value="FLOW_ACCESS"/> + <property name="flowDefinitionSource"> + <value> + repoAdminFlow=ROLE_ADMINISTRATOR + userListFlow=ROLE_ADMINISTRATOR + roleListFlow=ROLE_ADMINISTRATOR + <!--reportUnitFlow=ROLE_ADMINISTRATOR--> + olapUnitFlow=ROLE_ADMINISTRATOR + olapClientConnectionFlow=ROLE_ADMINISTRATOR + mondrianXmlaSourceFlow=ROLE_ADMINISTRATOR + editFolderFlow=ROLE_ADMINISTRATOR + fileResourceFlow=ROLE_ADMINISTRATOR + dataTypeFlow=ROLE_ADMINISTRATOR + listOfValuesFlow=ROLE_ADMINISTRATOR + queryFlow=ROLE_ADMINISTRATOR + reportDataSourceFlow=ROLE_ADMINISTRATOR + inputControlsFlow=ROLE_ADMINISTRATOR + tenantFlow=ROLE_ADMINISTRATOR + createSLDatasourceFlow=ROLE_ADMINISTRATOR + <!--objectPermissionToRoleFlow=ROLE_ADMINISTRATOR--> + userEditFlow=ROLE_ADMINISTRATOR + roleEditFlow=ROLE_ADMINISTRATOR + queryReferenceFlow=ROLE_ADMINISTRATOR + <!--objectPermissionToUserFlow=ROLE_ADMINISTRATOR--> + searchFlow=ROLE_USER,ROLE_ADMINISTRATOR + *=ROLE_USER,ROLE_ADMINISTRATOR + </value> + </property> + </bean> + + <bean id="addFlowDefinitionSources" class="com.jaspersoft.jasperserver.api.common.util.spring.GenericBeanUpdaterDefinition"> + <property name="beanName" value="flowVoter"/> + <property name="propertyName" value="flowDefinitionSource"/> + <property name="operation" value="append"/> + </bean> + + <bean id="flowAccessDecisionManager" class="org.springframework.security.vote.AffirmativeBased"> + <property name="allowIfAllAbstainDecisions"><value>true</value></property> + <property name="decisionVoters"> + <list> + <ref local="flowVoter"/> + </list> + </property> + </bean> + + <bean id="flowExecuterSecurity" class="org.springframework.security.intercept.method.aopalliance.MethodSecurityInterceptor"> + <property name="authenticationManager"><ref local="authenticationManager"/></property> + <property name="accessDecisionManager"><ref local="flowAccessDecisionManager"/></property> + <property name="objectDefinitionSource"> + <value> + org.springframework.webflow.executor.FlowExecutor.launchExecution=FLOW_ACCESS + </value> + </property> + </bean> + + <bean id="checkAclUpdateInterceptor" + class="com.jaspersoft.jasperserver.api.metadata.user.service.impl.CheckMethodSecurityInterceptor"> + <property name="authenticationManager"> + <ref local="authenticationManager"/> + </property> + <property name="accessDecisionManager"> + <ref local="aclAccessDecisionManager"/> + </property> + + <property name="afterInvocationManager"> + <ref local="afterInvocationManagerForUpdate"/> + </property> + + <property name="objectDefinitionSource"><ref local="repositoryServiceMethodSecurity"/></property> + </bean> + + + <!-- Use for saveResource --> + <bean id="securityCheckerForAclUpdate" + class="org.springframework.aop.framework.ProxyFactoryBean"> + <property name="proxyInterfaces"> + <value> + com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryService + </value> + </property> + <property name="interceptorNames"> + <list> + <idref bean="checkAclUpdateInterceptor"/> + </list> + </property> + </bean> + + <!-- Utility class using securityCheckerForAclUpdate --> + <!--<bean id="internalRepositoryServiceSecurityChecker"--> + <!--class="com.jaspersoft.jasperserver.api.metadata.common.service.impl.RepositoryServiceSecurityChecker">--> + <!--<property name="securityChecker">--> + <!--<ref local="securityCheckerForAclUpdate"/>--> + <!--</property>--> + <!--</bean>--> + + <bean id="repositoryServiceSecurityChecker" + class="com.jaspersoft.jasperserver.api.metadata.common.service.impl.RepositoryServiceSecurityChecker"> + <property name="securityChecker"> + <ref local="securityCheckerForAclUpdate"/> + </property> + </bean> + + + <!-- run other interceptors if the user has update access. --> + <bean id="aclUpdateMethodSecurityInterceptor" + class="org.springframework.security.intercept.method.aopalliance.MethodSecurityInterceptor"> + <property name="authenticationManager"> + <ref local="authenticationManager"/> + </property> + <property name="accessDecisionManager"> + <ref local="aclAccessDecisionManager"/> + </property> + + <property name="afterInvocationManager"> + <ref local="afterInvocationManagerForUpdate"/> + </property> + + <property name="objectDefinitionSource"> + <value> + +<!-- Commented out to see if no regression appear after. Bug #15083 + + com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryService.getResource=ACL_USER_UPDATE + com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryService.getFolder=ACL_USER_UPDATE + com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryService.loadResourcesList=AFTER_ACL_COLLECTION_UPDATE + com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryService.getResourcesByIdList=AFTER_ACL_COLLECTION_UPDATE + com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryService.loadClientResources=AFTER_ACL_COLLECTION_UPDATE + com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryService.getAllFolders=AFTER_ACL_COLLECTION_UPDATE + com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryService.getAllSubfolders=AFTER_ACL_COLLECTION_UPDATE + com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryService.getSubFolders=AFTER_ACL_COLLECTION_UPDATE + com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryService.saveFolder=ACL_USER_UPDATE + com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryService.saveResource=ACL_USER_UPDATE + com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryService.deleteResource=ACL_USER_DELETE + com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryService.deleteFolder=ACL_USER_DELETE + com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryService.delete=ACL_USER_DELETE +--> + + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.getResource=ACL_USER_UPDATE + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.getResources=AFTER_ACL_COLLECTION_UPDATE + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.getFolder=ACL_USER_UPDATE + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.loadResourcesList=AFTER_ACL_COLLECTION_UPDATE + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.getResourcesByIdList=AFTER_ACL_COLLECTION_UPDATE + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.loadClientResources=AFTER_ACL_COLLECTION_UPDATE + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.getAllFolders=AFTER_ACL_COLLECTION_UPDATE + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.getAllSubfolders=AFTER_ACL_COLLECTION_UPDATE + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.getSubFolders=AFTER_ACL_COLLECTION_UPDATE + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.saveFolder=ACL_USER_UPDATE + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.saveResource=ACL_USER_UPDATE + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.deleteResource=ACL_USER_DELETE + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.deleteFolder=ACL_USER_DELETE + com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService.delete=ACL_USER_DELETE + </value> + </property> + </bean> + + <!-- Use for getAllFolders: will run repositoryService methods if the user has update access. --> + <bean id="repositoryServiceForAclUpdate" + class="org.springframework.aop.framework.ProxyFactoryBean"> + <property name="proxyInterfaces"> + <value> + com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryService + </value> + </property> + <property name="interceptorNames"> + <list> + <idref bean="aclUpdateMethodSecurityInterceptor"/> + <idref bean="hibernateRepositoryService"/> + </list> + </property> + </bean> + + <bean id="aclUserMoveVoter" class="com.jaspersoft.jasperserver.api.metadata.security.MultiAclEntryVoter"> + <property name="configAttribute" value="ACL_USER_MOVE"/> + <property name="aclManager" ref="aclManager"/> + <property name="argumentVoters"> + <list> + <bean class="com.jaspersoft.jasperserver.api.metadata.security.BasicMethodArgumentVoter"> + <property name="argumentType" value="java.lang.String"/> + <property name="argumentIndex" value="1"/> + <property name="accessPermissions"> + <list> + <ref local="JasperServerAclEntry.ADMINISTRATION"/> + <ref local="JasperServerAclEntry.DELETE"/> + </list> + </property> + </bean> + <bean class="com.jaspersoft.jasperserver.api.metadata.security.BasicMethodArgumentVoter"> + <property name="argumentType" value="java.lang.String"/> + <property name="argumentIndex" value="2"/> + <property name="accessPermissions"> + <list> + <ref local="JasperServerAclEntry.ADMINISTRATION"/> + <ref local="JasperServerAclEntry.READ_WRITE"/> + </list> + </property> + </bean> + </list> + </property> + </bean> + + <bean id="aclUserCopyVoter" class="com.jaspersoft.jasperserver.api.metadata.security.MultiAclEntryVoter"> + <property name="configAttribute" value="ACL_USER_COPY"/> + <property name="aclManager" ref="aclManager"/> + <property name="argumentVoters"> + <list> + <bean class="com.jaspersoft.jasperserver.api.metadata.security.BasicMethodArgumentVoter"> + <property name="argumentType" value="java.lang.String"/> + <property name="argumentIndex" value="1"/> + <property name="accessPermissions"> + <list> + <ref local="JasperServerAclEntry.ADMINISTRATION"/> + <ref local="JasperServerAclEntry.READ"/> + </list> + </property> + </bean> + <bean class="com.jaspersoft.jasperserver.api.metadata.security.BasicMethodArgumentVoter"> + <property name="argumentType" value="java.lang.String"/> + <property name="argumentIndex" value="2"/> + <property name="accessPermissions"> + <list> + <ref local="JasperServerAclEntry.ADMINISTRATION"/> + <ref local="JasperServerAclEntry.READ_WRITE"/> + </list> + </property> + <property name="argumentFunctor"> + <bean class="com.jaspersoft.jasperserver.api.metadata.common.util.ParentPathFunctor"/> + </property> + </bean> + </list> + </property> + </bean> + + <bean id="aclUserMultiCopyVoter" class="com.jaspersoft.jasperserver.api.metadata.security.MultiAclEntryVoter"> + <property name="configAttribute" value="ACL_USER_MULTI_COPY"/> + <property name="aclManager" ref="aclManager"/> + <property name="argumentVoters"> + <list> + <bean class="com.jaspersoft.jasperserver.api.metadata.security.BasicMethodCollectionArgumentVoter"> + <property name="argumentType" value="java.lang.String[]"/> + <property name="accessPermissions"> + <list> + <ref local="JasperServerAclEntry.ADMINISTRATION"/> + <ref local="JasperServerAclEntry.READ"/> + </list> + </property> + </bean> + <bean class="com.jaspersoft.jasperserver.api.metadata.security.BasicMethodArgumentVoter"> + <property name="argumentType" value="java.lang.String"/> + <property name="accessPermissions"> + <list> + <ref local="JasperServerAclEntry.ADMINISTRATION"/> + <ref local="JasperServerAclEntry.READ_WRITE"/> + </list> + </property> + </bean> + </list> + </property> + </bean> + +</beans> -- To view, visit http://gerrit.ovirt.org/13165 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I7f91af37264b511d1e84277b68b39c22a89103ab Gerrit-PatchSet: 1 Gerrit-Project: ovirt-reports Gerrit-Branch: master Gerrit-Owner: Yaniv Dary <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
