]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.security.dao.jackrabbit/META-INF/spring/security-jcr-services.xml
Standalone authentication based on Jackrabbit.
[lgpl/argeo-commons.git] / org.argeo.security.dao.jackrabbit / META-INF / spring / security-jcr-services.xml
index 1300a05506f8cc57c0f428994bd31714e8907a27..32baed4735e4c33989cb692f500361bfe5e06efc 100644 (file)
                <property name="providers">
                        <list>
                                <ref bean="authByAdapterProvider" />
-                               <ref bean="remoteJcrAuthenticationProvider" />
+                               <ref bean="userDetailsManager" />
                        </list>
                </property>
        </bean>
 
        <!-- Authentication providers -->
-       <bean id="remoteJcrAuthenticationProvider" class="org.argeo.security.jcr.RemoteJcrAuthenticationProvider">
-               <property name="repositoryFactory" ref="repositoryFactory" />
-               <property name="bundleContext" ref="bundleContext" />
-       </bean>
-
        <bean id="authByAdapterProvider"
                class="org.springframework.security.adapters.AuthByAdapterProvider">
                <property name="key" value="${argeo.security.systemKey}" />
        </bean>
 
        <!-- Dummy user manager -->
-       <bean id="userDetailsManager" class="org.argeo.security.jcr.OsJcrUserAdminService"
+       <bean id="userDetailsManager"
+               class="org.argeo.security.jackrabbit.JackrabbitUserAdminService"
+               init-method="init" destroy-method="destroy" depends-on="systemInit">
+               <property name="repository" ref="nodeRepository" />
+               <property name="securityModel" ref="jcrSecurityModel" />
+       </bean>
+
+       <bean name="jcrSecurityModel" class="org.argeo.security.jcr.SimpleJcrSecurityModel"
+               depends-on="argeoDataModel" />
+
+       <bean id="argeoDataModel" class="org.argeo.jackrabbit.JackrabbitWrapper"
                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" />
+               <property name="bundleContext" ref="bundleContext" />
+       </bean>
+
+       <!-- Internal authentication, used by during the general authentication 
+               initialization himself, in order to prevent the following dependency cycle: 
+               Repository.login() <= AuthenticationManager <= JackrabbitUserAdminService 
+               <= Repository.login() in init() -->
+       <bean id="internalAuthenticationManager" class="org.springframework.security.providers.ProviderManager">
+               <property name="providers">
+                       <list>
+                               <ref bean="authByAdapterProvider" />
+                       </list>
+               </property>
+       </bean>
+
+       <bean id="systemInit"
+               class="org.argeo.security.core.AuthenticatedApplicationContextInitialization">
+               <description><![CDATA[Executes initialization with a system authentication]]></description>
+               <property name="authenticationManager" ref="internalAuthenticationManager" />
+               <property name="systemAuthenticationKey" value="${argeo.security.systemKey}" />
        </bean>
 
 </beans>
\ No newline at end of file