]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - security/modules/org.argeo.security.dao.os/META-INF/spring/security-os.xml
Big cleanup of the security layers
[lgpl/argeo-commons.git] / security / modules / org.argeo.security.dao.os / META-INF / spring / security-os.xml
index 180f1fe8d042af2a7e3665b94dd9043838bebf17..b337218835643a34aa75d12abc1af4d0bdcfe9da 100644 (file)
                </property>
        </bean>
 
-       <bean id="osJcrAuthenticationProvider" class="org.argeo.security.jcr.OsJcrAuthenticationProvider">
+       <bean id="argeoDataModel" class="org.argeo.jackrabbit.JackrabbitContainer"
+               init-method="init" destroy-method="destroy">
+               <description><![CDATA[Make sure that Argeo base data model is registered]]></description>
+               <property name="cndFiles">
+                       <list>
+                               <value>/org/argeo/jcr/argeo.cnd</value>
+                       </list>
+               </property>
+               <property name="repository" ref="nodeRepository" />
        </bean>
 
-
        <bean id="systemExecutionService" class="org.argeo.security.core.KeyBasedSystemExecutionService">
-               <property name="systemAuthenticationKey" value="${argeo.security.systemKey}" />
                <property name="authenticationManager" ref="authenticationManager" />
+               <property name="systemAuthenticationKey" value="${argeo.security.systemKey}" />
        </bean>
 
        <bean id="authenticationManager" class="org.springframework.security.providers.ProviderManager">
                <property name="providers">
-                       <bean factory-bean="authenticationProvidersRegister"
-                               factory-method="getProviders" />
+                       <list>
+                               <ref bean="authByAdapterProvider" />
+                               <ref bean="osJcrAuthenticationProvider" />
+                       </list>
                </property>
        </bean>
 
-       <bean id="authenticationProvidersRegister" class="org.argeo.security.core.AuthenticationProvidersRegister">
-               <property name="defaultProviders">
+       <!-- Authentication providers -->
+       <bean id="osJcrAuthenticationProvider" class="org.argeo.security.jcr.OsJcrAuthenticationProvider"
+               init-method="init" destroy-method="destroy">
+               <property name="repository" ref="argeoDataModel" />
+       </bean>
+
+       <bean id="authByAdapterProvider"
+               class="org.springframework.security.adapters.AuthByAdapterProvider">
+               <description><![CDATA[System authentication]]></description>
+               <property name="key" value="${argeo.security.systemKey}" />
+       </bean>
+
+       <!-- Internal authentication, used by the general authentication process 
+               himself, in order to prevent the following dependency cycle: Repository.login() 
+               <= AuthenticationManager <= osJcrAuthenticationProvider <= Repository.login() 
+               in init() -->
+       <bean id="internalAuthenticationManager" class="org.springframework.security.providers.ProviderManager">
+               <property name="providers">
                        <list>
-                               <bean class="org.springframework.security.adapters.AuthByAdapterProvider">
-                                       <property name="key" value="${argeo.security.systemKey}" />
-                               </bean>
-                               <ref bean="osJcrAuthenticationProvider" />
+                               <ref bean="authByAdapterProvider" />
                        </list>
                </property>
        </bean>
 
+       <bean
+               class="org.argeo.security.core.AuthenticatedApplicationContextInitialization">
+               <description><![CDATA[Executes initialization with a system authentication]]></description>
+               <property name="authenticationManager" ref="internalAuthenticationManager" />
+       </bean>
+
 </beans>
\ No newline at end of file