+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.argeo.node.repo.jackrabbit</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.pde.PluginNature</nature>
- </natures>
-</projectDescription>
+++ /dev/null
-#Wed Feb 23 10:53:42 CET 2011
-eclipse.preferences.version=1
-pluginProject.extensions=false
-resolve.requirebundle=false
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<beans:beans xmlns="http://www.springframework.org/schema/osgi"\r
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"\r
- xmlns:util="http://www.springframework.org/schema/util"\r
- xsi:schemaLocation="http://www.springframework.org/schema/osgi \r
- http://www.springframework.org/schema/osgi/spring-osgi-1.1.xsd\r
- http://www.springframework.org/schema/beans \r
- http://www.springframework.org/schema/beans/spring-beans-2.5.xsd\r
- http://www.springframework.org/schema/util\r
- http://www.springframework.org/schema/util/spring-util-2.5.xsd">\r
-\r
- <!-- REFERENCE -->\r
- <list id="repositories" interface="javax.jcr.Repository"\r
- cardinality="0..N">\r
- <listener ref="repositoryFactory" bind-method="register"\r
- unbind-method="unregister" />\r
- </list>\r
-\r
- <!-- SERVICES -->\r
- <service ref="nodeJcrRepository">\r
- <interfaces>\r
- <beans:value>javax.jcr.Repository</beans:value>\r
- <beans:value>org.argeo.jcr.MaintainedRepository</beans:value>\r
- </interfaces>\r
- <service-properties>\r
- <beans:entry key="argeo.jcr.repository.alias" value="node" />\r
- <beans:entry key="argeo.jcr.repository.home" value="${argeo.node.repo.home}" />\r
- </service-properties>\r
- </service>\r
- <service ref="repositoryFactory" interface="javax.jcr.RepositoryFactory" />\r
-</beans:beans>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
-
- <bean
- class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
- <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
- <property name="locations">
- <value>osgibundle:noderepo.properties</value>
- </property>
- </bean>
-
- <bean id="nodeJcrRepository" class="org.argeo.jackrabbit.JackrabbitContainer"
- init-method="init" destroy-method="destroy">
- <property name="homeDirectory" value="${argeo.node.repo.home}" />
- <property name="configuration" value="${argeo.node.repo.configuration}" />
- <property name="variables" value="osgibundle:/noderepo.properties" />
- <property name="forceCndImport" value="${argeo.node.repo.forceCndImport}" />
- </bean>
-
- <bean id="repositoryFactory" class="org.argeo.jackrabbit.OsgiJackrabbitRepositoryFactory">
- <property name="bundleContext" ref="bundleContext" />
- </bean>
-
-</beans>
\ No newline at end of file
+++ /dev/null
-bin.includes = META-INF/,\
- noderepo.properties,\
- repository-h2.xml,\
- repository-postgresql.xml
+++ /dev/null
-# Workspace used by the node session
-argeo.node.repo.defaultWorkspace=main
-#argeo.node.repo.securityWorkspace=security
-argeo.node.repo.forceCndImport=true
-
-# Repository base directory
-argeo.node.repo.home=${osgi.instance.area}/node
-
-## H2 Embedded (DEFAULT)
-argeo.node.repo.configuration=osgibundle:repository-h2.xml
-argeo.node.repo.dburl=jdbc:h2:${osgi.instance.area}/node/h2/repository
-argeo.node.repo.dbuser=sa
-argeo.node.repo.dbpassword=
-
-# ADVANCED
-argeo.node.repo.maxPoolSize=10
\ No newline at end of file
+++ /dev/null
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.argeo.commons</groupId>
- <version>2.1.13-SNAPSHOT</version>
- <artifactId>argeo-commons</artifactId>
- <relativePath>..</relativePath>
- </parent>
- <artifactId>org.argeo.node.repo.jackrabbit</artifactId>
- <name>Commons Server Node Repository Jackrabbit</name>
- <description>Default Node Repository Based on Jackrabbit</description>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.felix</groupId>
- <artifactId>maven-bundle-plugin</artifactId>
- <configuration>
- <instructions>
- <Bundle-SymbolicName>${project.artifactId};singleton:=true</Bundle-SymbolicName>
- <!-- Import-Package needs to be specified explicitly since BND doesn't
- deal with custom Spring-Context instructions -->
- <Spring-Context>META-INF/spring/*.xml;create-asynchronously:=false</Spring-Context>
- <Import-Package>
- *,
- com.mysql.jdbc;resolution:=optional,
- org.h2;resolution:=optional,
- org.postgresql;resolution:=optional,
- javax.jcr,
- org.apache.jackrabbit.core,
- org.apache.jackrabbit.core.config,
- org.argeo.jackrabbit,
- org.argeo.jcr,
- org.springframework.beans.factory.config,
- </Import-Package>
- </instructions>
- </configuration>
- </plugin>
- </plugins>
- </build>
-</project>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0"?>
-<!DOCTYPE Repository PUBLIC "-//The Apache Software Foundation//DTD Jackrabbit 1.6//EN"
- "http://jackrabbit.apache.org/dtd/repository-2.0.dtd">
-<Repository>
- <!-- Shared datasource -->
- <DataSources>
- <DataSource name="dataSource">
- <param name="driver" value="org.h2.Driver" />
- <param name="url" value="${argeo.node.repo.dburl}" />
- <param name="user" value="${argeo.node.repo.dbuser}" />
- <param name="password" value="${argeo.node.repo.dbpassword}" />
- <param name="databaseType" value="h2" />
- <param name="maxPoolSize" value="${argeo.node.repo.maxPoolSize}" />
- </DataSource>
- </DataSources>
-
- <!-- File system and datastore -->
- <FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
- <param name="dataSourceName" value="dataSource" />
- <param name="schema" value="default" />
- <param name="schemaObjectPrefix" value="fs_" />
- </FileSystem>
- <DataStore class="org.apache.jackrabbit.core.data.FileDataStore">
- <param name="path" value="${rep.home}/datastore" />
- </DataStore>
-
- <!-- Workspace templates -->
- <Workspaces rootPath="${rep.home}/workspaces"
- defaultWorkspace="${argeo.node.repo.defaultWorkspace}" />
- <Workspace name="${wsp.name}">
- <FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
- <param name="dataSourceName" value="dataSource" />
- <param name="schema" value="default" />
- <param name="schemaObjectPrefix" value="${wsp.name}_fs_" />
- </FileSystem>
- <PersistenceManager
- class="org.apache.jackrabbit.core.persistence.pool.H2PersistenceManager">
- <param name="dataSourceName" value="dataSource" />
- <param name="schemaObjectPrefix" value="${wsp.name}_pm_" />
- </PersistenceManager>
- <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
- <param name="path" value="${wsp.home}/index" />
- <param name="initializeHierarchyCache" value="true" />
- </SearchIndex>
- </Workspace>
-
- <!-- Versioning -->
- <Versioning rootPath="${rep.home}/version">
- <FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
- <param name="dataSourceName" value="dataSource" />
- <param name="schema" value="default" />
- <param name="schemaObjectPrefix" value="fs_ver_" />
- </FileSystem>
- <PersistenceManager
- class="org.apache.jackrabbit.core.persistence.pool.H2PersistenceManager">
- <param name="dataSourceName" value="dataSource" />
- <param name="schemaObjectPrefix" value="pm_ver_" />
- </PersistenceManager>
- </Versioning>
-
- <!-- Indexing -->
- <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
- <param name="path" value="${rep.home}/index" />
- <param name="initializeHierarchyCache" value="true" />
- <!-- <param name="extractorPoolSize" value="2" /> -->
- <!-- <param name="supportHighlighting" value="true" /> -->
- </SearchIndex>
-
- <!-- Security -->
- <Security appName="Jackrabbit">
- <SecurityManager class="org.argeo.security.jackrabbit.ArgeoSecurityManager"
- workspaceName="security">
- </SecurityManager>
- <AccessManager class="org.argeo.security.jackrabbit.ArgeoAccessManager">
- </AccessManager>
- <LoginModule class="org.argeo.security.jackrabbit.ArgeoLoginModule">
- </LoginModule>
- </Security>
-</Repository>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0"?>
-<!DOCTYPE Repository PUBLIC "-//The Apache Software Foundation//DTD Jackrabbit 1.6//EN"
- "http://jackrabbit.apache.org/dtd/repository-2.0.dtd">
-<Repository>
- <!-- File system and datastore -->
- <FileSystem class="org.apache.jackrabbit.core.fs.mem.MemoryFileSystem" />
-
- <!-- Workspace templates -->
- <Workspaces rootPath="${rep.home}/workspaces"
- defaultWorkspace="${argeo.node.repo.defaultWorkspace}" configRootPath="/workspaces" />
- <Workspace name="${wsp.name}">
- <FileSystem class="org.apache.jackrabbit.core.fs.mem.MemoryFileSystem" />
- <PersistenceManager
- class="org.apache.jackrabbit.core.persistence.bundle.BundleFsPersistenceManager">
- <param name="blobFSBlockSize" value="1" />
- </PersistenceManager>
- <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
- <param name="path" value="${wsp.home}/index" />
- <param name="directoryManagerClass"
- value="org.apache.jackrabbit.core.query.lucene.directory.RAMDirectoryManager" />
- <FileSystem class="org.apache.jackrabbit.core.fs.mem.MemoryFileSystem" />
- </SearchIndex>
- </Workspace>
-
- <!-- Versioning -->
- <Versioning rootPath="${rep.home}/version">
- <FileSystem class="org.apache.jackrabbit.core.fs.mem.MemoryFileSystem" />
- <PersistenceManager
- class="org.apache.jackrabbit.core.persistence.bundle.BundleFsPersistenceManager">
- <param name="blobFSBlockSize" value="1" />
- </PersistenceManager>
- </Versioning>
-
- <!-- Indexing -->
- <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
- <param name="path" value="${rep.home}/index" />
- <param name="directoryManagerClass"
- value="org.apache.jackrabbit.core.query.lucene.directory.RAMDirectoryManager" />
- <FileSystem class="org.apache.jackrabbit.core.fs.mem.MemoryFileSystem" />
- </SearchIndex>
-
- <!-- Security -->
- <Security appName="Jackrabbit">
- <SecurityManager class="org.argeo.security.jackrabbit.ArgeoSecurityManager"
- workspaceName="security">
- </SecurityManager>
- <AccessManager class="org.argeo.security.jackrabbit.ArgeoAccessManager">
- </AccessManager>
- <LoginModule class="org.argeo.security.jackrabbit.ArgeoLoginModule">
- </LoginModule>
- </Security>
-</Repository>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0"?>
-<!DOCTYPE Repository PUBLIC "-//The Apache Software Foundation//DTD Jackrabbit 1.6//EN"
- "http://jackrabbit.apache.org/dtd/repository-2.0.dtd">
-<Repository>
- <!-- Shared datasource -->
- <DataSources>
- <DataSource name="dataSource">
- <param name="driver" value="com.mysql.jdbc.Driver" />
- <param name="url" value="${argeo.node.repo.dburl}" />
- <param name="user" value="${argeo.node.repo.dbuser}" />
- <param name="password" value="${argeo.node.repo.dbpassword}" />
- <param name="databaseType" value="mysql" />
- <param name="maxPoolSize" value="${argeo.node.repo.maxPoolSize}" />
- </DataSource>
- </DataSources>
-
- <!-- File system and datastore -->
- <FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
- <param name="dataSourceName" value="dataSource" />
- <param name="schema" value="mysql" />
- <param name="schemaObjectPrefix" value="fs_" />
- </FileSystem>
- <DataStore class="org.apache.jackrabbit.core.data.FileDataStore">
- <param name="path" value="${rep.home}/datastore" />
- </DataStore>
-
- <!-- Workspace templates -->
- <Workspaces rootPath="${rep.home}/workspaces"
- defaultWorkspace="default" />
- <Workspace name="${wsp.name}">
- <FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
- <param name="dataSourceName" value="dataSource" />
- <param name="schema" value="mysql" />
- <param name="schemaObjectPrefix" value="fs_${wsp.name}_" />
- </FileSystem>
- <PersistenceManager
- class="org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager">
- <param name="dataSourceName" value="dataSource" />
- <param name="schemaObjectPrefix" value="pm_${wsp.name}_" />
- </PersistenceManager>
- <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
- <param name="path" value="${wsp.home}/index" />
- </SearchIndex>
- </Workspace>
-
- <!-- Versioning -->
- <Versioning rootPath="${rep.home}/version">
- <FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
- <param name="dataSourceName" value="dataSource" />
- <param name="schema" value="mysql" />
- <param name="schemaObjectPrefix" value="fs_ver_" />
- </FileSystem>
- <PersistenceManager
- class="org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager">
- <param name="dataSourceName" value="dataSource" />
- <param name="schemaObjectPrefix" value="pm_ver_" />
- </PersistenceManager>
- </Versioning>
-
- <!-- Indexing -->
- <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
- <param name="path" value="${rep.home}/index" />
- <param name="extractorPoolSize" value="2" />
- <param name="supportHighlighting" value="true" />
- </SearchIndex>
-
- <!-- Security -->
- <Security appName="Jackrabbit">
- <SecurityManager class="org.argeo.security.jackrabbit.ArgeoSecurityManager"
- workspaceName="security">
- </SecurityManager>
- <AccessManager class="org.argeo.security.jackrabbit.ArgeoAccessManager">
- </AccessManager>
- <LoginModule class="org.argeo.security.jackrabbit.ArgeoLoginModule">
- </LoginModule>
- </Security>
-</Repository>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0"?>
-<!DOCTYPE Repository PUBLIC "-//The Apache Software Foundation//DTD Jackrabbit 1.6//EN"
- "http://jackrabbit.apache.org/dtd/repository-2.0.dtd">
-<Repository>
- <!-- Shared datasource -->
- <DataSources>
- <DataSource name="dataSource">
- <param name="driver" value="org.postgresql.Driver" />
- <param name="url" value="${argeo.node.repo.dburl}" />
- <param name="user" value="${argeo.node.repo.dbuser}" />
- <param name="password" value="${argeo.node.repo.dbpassword}" />
- <param name="databaseType" value="postgresql" />
- <param name="maxPoolSize" value="${argeo.node.repo.maxPoolSize}" />
- </DataSource>
- </DataSources>
-
- <!-- File system and datastore -->
- <FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
- <param name="dataSourceName" value="dataSource" />
- <param name="schema" value="postgresql" />
- <param name="schemaObjectPrefix" value="fs_" />
- </FileSystem>
- <DataStore class="org.apache.jackrabbit.core.data.FileDataStore">
- <param name="path" value="${rep.home}/datastore" />
- </DataStore>
-
- <!-- Workspace templates -->
- <Workspaces rootPath="${rep.home}/workspaces"
- defaultWorkspace="${argeo.node.repo.defaultWorkspace}" />
- <Workspace name="${wsp.name}">
- <FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
- <param name="dataSourceName" value="dataSource" />
- <param name="schema" value="postgresql" />
- <param name="schemaObjectPrefix" value="${wsp.name}_fs_" />
- </FileSystem>
- <PersistenceManager
- class="org.apache.jackrabbit.core.persistence.pool.PostgreSQLPersistenceManager">
- <param name="dataSourceName" value="dataSource" />
- <param name="schemaObjectPrefix" value="${wsp.name}_pm_" />
- </PersistenceManager>
- <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
- <param name="path" value="${wsp.home}/index" />
- </SearchIndex>
- </Workspace>
-
- <!-- Versioning -->
- <Versioning rootPath="${rep.home}/version">
- <FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
- <param name="dataSourceName" value="dataSource" />
- <param name="schema" value="postgresql" />
- <param name="schemaObjectPrefix" value="fs_ver_" />
- </FileSystem>
- <PersistenceManager
- class="org.apache.jackrabbit.core.persistence.pool.PostgreSQLPersistenceManager">
- <param name="dataSourceName" value="dataSource" />
- <param name="schemaObjectPrefix" value="pm_ver_" />
- </PersistenceManager>
- </Versioning>
-
- <!-- Indexing -->
- <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
- <param name="path" value="${rep.home}/index" />
- <param name="extractorPoolSize" value="2" />
- <param name="supportHighlighting" value="true" />
- </SearchIndex>
-
- <!-- Security -->
- <Security appName="Jackrabbit">
- <SecurityManager class="org.argeo.security.jackrabbit.ArgeoSecurityManager"
- workspaceName="security">
- </SecurityManager>
- <AccessManager class="org.argeo.security.jackrabbit.ArgeoAccessManager">
- </AccessManager>
- <LoginModule class="org.argeo.security.jackrabbit.ArgeoLoginModule">
- </LoginModule>
- </Security>
-</Repository>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.argeo.security.auth.ldap</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.pde.PluginNature</nature>
- </natures>
-</projectDescription>
+++ /dev/null
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:security="http://www.springframework.org/schema/security"
- 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-2.5.xsd
- http://www.springframework.org/schema/security
- http://www.springframework.org/schema/security/spring-security-2.0.4.xsd
- http://www.springframework.org/schema/util
- http://www.springframework.org/schema/util/spring-util-2.5.xsd">
-
- <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>
-
- <bean id="jcrLdapSynchronizer" class="org.argeo.security.ldap.jcr.JcrLdapSynchronizer"
- init-method="init" destroy-method="destroy" depends-on="argeoDataModel">
- <!-- LDAP -->
- <property name="usernameAttribute" value="${argeo.ldap.usernameAttribute}" />
- <property name="passwordAttribute" value="${argeo.ldap.passwordAttribute}" />
- <property name="userClasses">
- <list>
- <value>${argeo.ldap.userClass}</value>
- </list>
- </property>
- <property name="passwordEncoder" ref="passwordEncoder" />
- <property name="userBase" value="${argeo.ldap.userBase}" />
- <property name="usernameMapper" ref="usernameMapper" />
- <property name="ldapTemplate" ref="ldapTemplate" />
- <property name="rawLdapTemplate" ref="rawLdapTemplate" />
- <!-- JCR -->
- <property name="repository" ref="nodeRepository" />
- <property name="jcrSecurityModel" ref="jcrSecurityModel" />
- <property name="propertyToAttributes" ref="propertyToAttributes" />
- </bean>
-
- <bean name="jcrSecurityModel" class="org.argeo.security.jackrabbit.JackrabbitSecurityModel" />
-
- <!-- LDAP / JCR mapping -->
- <util:map id="propertyToAttributes">
- <entry value="cn">
- <key>
- <util:constant static-field="javax.jcr.Property.JCR_TITLE" />
- </key>
- </entry>
- <entry value="description">
- <key>
- <util:constant static-field="javax.jcr.Property.JCR_DESCRIPTION" />
- </key>
- </entry>
- <entry value="givenName">
- <key>
- <util:constant static-field="org.argeo.jcr.ArgeoNames.ARGEO_FIRST_NAME" />
- </key>
- </entry>
- <entry value="sn">
- <key>
- <util:constant static-field="org.argeo.jcr.ArgeoNames.ARGEO_LAST_NAME" />
- </key>
- </entry>
- <entry value="mail">
- <key>
- <util:constant static-field="org.argeo.jcr.ArgeoNames.ARGEO_PRIMARY_EMAIL" />
- </key>
- </entry>
- <entry value="o">
- <key>
- <util:constant static-field="org.argeo.jcr.ArgeoNames.ARGEO_PRIMARY_ORGANIZATION" />
- </key>
- </entry>
- </util:map>
-</beans>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<beans:beans xmlns="http://www.springframework.org/schema/osgi"\r
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"\r
- xsi:schemaLocation="http://www.springframework.org/schema/osgi \r
- http://www.springframework.org/schema/osgi/spring-osgi-1.1.xsd\r
- http://www.springframework.org/schema/beans \r
- http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
-\r
- <!-- REFERENCES -->\r
- <reference id="nodeRepository" interface="javax.jcr.Repository"\r
- filter="(argeo.jcr.repository.alias=node)" />\r
-\r
- <!-- SERVICES -->\r
- <service ref="authenticationManager"\r
- interface="org.springframework.security.authentication.AuthenticationManager"\r
- context-class-loader="service-provider" />\r
-\r
- <!-- User management -->\r
-<!-- <service ref="userDetailsManager" -->\r
-<!-- interface="org.springframework.security.core.userdetails.UserDetailsService" -->\r
-<!-- context-class-loader="service-provider" /> -->\r
-<!-- <service ref="userDetailsManager" -->\r
-<!-- interface="org.springframework.security.provisioning.UserDetailsManager" -->\r
-<!-- context-class-loader="service-provider" /> -->\r
-<!-- <service ref="userDetailsManager" interface="org.argeo.security.UserAdminService" -->\r
-<!-- context-class-loader="service-provider" /> -->\r
-</beans:beans>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
-
- <bean id="authenticationManager" class="org.springframework.security.authentication.ProviderManager">
- <property name="providers">
- <list>
- <ref bean="authByAdapterProvider" />
-<!-- <ref bean="preAuthProvider" /> -->
- <ref bean="anonymousAuthenticationProvider" />
-<!-- <ref bean="rememberMeAuthenticationProvider" /> -->
- <ref bean="ldapAuthenticationProvider" />
- </list>
- </property>
- </bean>
-
- <!-- Authentication provider -->
- <bean id="authByAdapterProvider"
- class="org.argeo.security.core.InternalAuthenticationProvider">
- <description><![CDATA[System authentication]]></description>
- <property name="key" value="${argeo.security.systemKey}" />
- </bean>
-
-<!-- <bean id="preAuthProvider" -->
-<!-- class="org.springframework.security.providers.preauth.PreAuthenticatedAuthenticationProvider"> -->
-<!-- <description><![CDATA[Pre-authentication]]></description> -->
-<!-- <property name="preAuthenticatedUserDetailsService"> -->
-<!-- <bean id="userDetailsServiceWrapper" -->
-<!-- class="org.springframework.security.userdetails.UserDetailsByNameServiceWrapper"> -->
-<!-- <property name="userDetailsService" ref="userDetailsManager" /> -->
-<!-- </bean> -->
-<!-- </property> -->
-<!-- </bean> -->
-
- <bean id="anonymousAuthenticationProvider"
- class="org.springframework.security.authentication.AnonymousAuthenticationProvider">
- <description><![CDATA[Anonymous authentication]]></description>
- <property name="key" value="${argeo.security.systemKey}" />
- </bean>
-
-<!-- <bean id="rememberMeAuthenticationProvider" -->
-<!-- class="org.springframework.security.providers.rememberme.RememberMeAuthenticationProvider"> -->
-<!-- <description><![CDATA[Remember me authentication]]></description> -->
-<!-- <property name="key" value="${argeo.security.systemKey}" /> -->
-<!-- </bean> -->
-
- <!-- Internal authentication, used by during the general authentication
- initialization himself, in order to prevent the following dependency cycle:
- Repository.login() <= AuthenticationManager <= LdapAuthenticationProvider
- <= Repository.login() in init() -->
- <bean id="internalAuthenticationManager" class="org.springframework.security.authentication.ProviderManager">
- <property name="providers">
- <list>
- <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
+++ /dev/null
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:security="http://www.springframework.org/schema/security"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
- http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.4.xsd">
-
- <!-- COMMON -->
- <bean
- class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
- <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
- <property name="locations">
- <value>osgibundle:ldap.properties</value>
- </property>
- </bean>
-
- <!-- AUTHENTICATION -->
- <bean id="ldapAuthenticationProvider"
- class="org.springframework.security.ldap.authentication.LdapAuthenticationProvider">
- <constructor-arg ref="ldapAuthenticator" />
- <constructor-arg ref="authoritiesPopulator" />
- <property name="userDetailsContextMapper" ref="jcrLdapSynchronizer" />
- </bean>
-
- <!-- PasswordComparisonAuthenticator doesn't work with SSHA -->
- <!-- <bean id="ldapAuthenticator" -->
- <!-- class="org.springframework.security.providers.ldap.authenticator.PasswordComparisonAuthenticator"> -->
- <!-- <constructor-arg ref="contextSource" /> -->
- <!-- <property name="userDnPatterns"> -->
- <!-- <list> -->
- <!-- <value><![CDATA[${argeo.ldap.usernameAttribute}={0},${argeo.ldap.userBase}]]></value> -->
- <!-- </list> -->
- <!-- </property> -->
- <!-- <property name="passwordAttributeName" value="${argeo.ldap.passwordAttribute}"
- /> -->
- <!-- <property name="passwordEncoder" ref="passwordEncoder" /> -->
- <!-- </bean> -->
-
- <!-- Bind authenticator doesn't work with Apache DS 1.0 -->
- <bean id="ldapAuthenticator"
- class="org.springframework.security.ldap.authentication.BindAuthenticator">
- <constructor-arg ref="contextSource" />
- <property name="userDnPatterns">
- <list>
- <value><![CDATA[${argeo.ldap.usernameAttribute}={0},${argeo.ldap.userBase}]]></value>
- </list>
- </property>
- </bean>
-
- <!-- USER DETAILS -->
- <!-- <bean id="userDetailsManager" class="org.argeo.security.ldap.ArgeoLdapUserDetailsManager"> -->
- <!-- <constructor-arg ref="contextSource" /> -->
- <!-- <property name="groupSearchBase" value="${argeo.ldap.groupBase}" /> -->
- <!-- <property name="groupMemberAttributeName" value="${argeo.ldap.groupMemberAttribute}"
- /> -->
- <!-- <property name="usernameMapper" ref="usernameMapper" /> -->
- <!-- <property name="userDetailsMapper" ref="jcrLdapSynchronizer" /> -->
- <!-- <property name="userAdminDao" ref="userAdminDao" /> -->
- <!-- <property name="passwordEncoder" ref="passwordEncoder" /> -->
- <!-- <property name="passwordAttributeName" value="${argeo.ldap.passwordAttribute}"
- /> -->
- <!-- <property name="superUsername" value="${argeo.security.superUsername}"
- /> -->
- <!-- </bean> -->
-
- <!-- <bean id="userAdminDao" class="org.argeo.security.ldap.ArgeoUserAdminDaoLdap"> -->
- <!-- <constructor-arg ref="contextSource" /> -->
- <!-- <property name="userBase" value="${argeo.ldap.userBase}" /> -->
- <!-- <property name="usernameAttribute" value="${argeo.ldap.usernameAttribute}"
- /> -->
- <!-- <property name="groupClasses"> -->
- <!-- <list> -->
- <!-- <value>top</value> -->
- <!-- <value>${argeo.ldap.groupClass}</value> -->
- <!-- </list> -->
- <!-- </property> -->
- <!-- <property name="groupBase" value="${argeo.ldap.groupBase}" /> -->
- <!-- <property name="groupRoleAttribute" value="${argeo.ldap.groupRoleAttribute}"
- /> -->
- <!-- <property name="groupMemberAttribute" value="${argeo.ldap.groupMemberAttribute}"
- /> -->
- <!-- <property name="defaultRole" value="${argeo.security.defaultRole}"
- /> -->
- <!-- <property name="rolePrefix" value="${argeo.security.rolePrefix}" /> -->
- <!-- <property name="usernameMapper" ref="usernameMapper" /> -->
- <!-- </bean> -->
-
- <bean id="usernameMapper"
- class="org.springframework.security.ldap.DefaultLdapUsernameToDnMapper">
- <constructor-arg value="${argeo.ldap.userBase}" />
- <constructor-arg value="${argeo.ldap.usernameAttribute}" />
- </bean>
-
- <bean id="authoritiesPopulator"
- class="org.springframework.security.ldap.userdetails.DefaultLdapAuthoritiesPopulator">
- <constructor-arg ref="contextSource" />
- <constructor-arg value="${argeo.ldap.groupBase}" />
- <property name="groupSearchFilter" value="${argeo.ldap.groupMemberAttribute}={0}" />
- <property name="defaultRole" value="${argeo.security.defaultRole}" />
- <property name="rolePrefix" value="${argeo.security.rolePrefix}" />
- </bean>
-
- <!-- LDAP LOW LEVEL -->
- <bean id="contextSource"
- class="org.springframework.security.ldap.DefaultSpringSecurityContextSource">
- <constructor-arg
- value="${argeo.ldap.protocol}://${argeo.ldap.host}:${argeo.ldap.port}/${argeo.ldap.rootdn}" />
- <!-- <property name="userDn" value="${argeo.ldap.manager.userdn}" /> -->
- <!-- <property name="password" value="${argeo.ldap.manager.password}" /> -->
- </bean>
-
- <bean id="ldapTemplate" class="org.springframework.ldap.core.LdapTemplate">
- <constructor-arg ref="contextSource" />
- </bean>
-
- <bean id="rawLdapTemplate" class="org.springframework.ldap.core.LdapTemplate">
- <description><![CDATA[LDAP template returning raw dir contexts, see http://forum.springsource.org/showthread.php?55955-Persistent-search-with-spring-ldap]]></description>
- <constructor-arg>
- <bean parent="contextSource">
- <property name="dirObjectFactory">
- <null />
- </property>
- </bean>
- </constructor-arg>
- </bean>
-
- <bean id="passwordEncoder" class="org.argeo.security.ldap.ArgeoLdapShaPasswordEncoder">
- <property name="useSalt" value="${argeo.ldap.password.useSalt}" />
- </bean>
-</beans>
+++ /dev/null
-Import-Package: org.argeo.jcr,\
-com.sun.jndi.ldap;resolution:=optional,\
-org.springframework.ldap.core.support,\
-*
\ No newline at end of file
+++ /dev/null
-bin.includes = META-INF/
+++ /dev/null
-argeo.security.defaultRole=ROLE_USER
-argeo.security.rolePrefix=ROLE_
-
-argeo.security.systemKey=argeo
-argeo.security.superUsername=root
-
-argeo.ldap.rootdn=dc=demo,dc=example,dc=org
-argeo.ldap.protocol=ldap
-argeo.ldap.host=localhost
-# default are for Apache Directory Server
-argeo.ldap.port=10389
-argeo.ldap.manager.userdn=uid=admin,ou=system
-argeo.ldap.manager.password=secret
-
-# USER
-argeo.ldap.userClass=inetOrgPerson
-argeo.ldap.osUserClass=posixAccount
-argeo.ldap.userBase=ou=People
-argeo.ldap.usernameAttribute=uid
-argeo.ldap.passwordAttribute=userPassword
-# ROLES
-argeo.ldap.groupClass=groupOfNames
-argeo.ldap.groupBase=ou=Roles
-argeo.ldap.groupRoleAttribute=cn
-argeo.ldap.groupMemberAttribute=member
-# OS GROUPS
-argeo.ldap.osGroupClass=posixGroup
-argeo.ldap.osGroupBase=ou=Group
-argeo.ldap.osGroupNameAttribute=cn
-argeo.ldap.osGroupMemberAttribute=memberUid
-
-argeo.ldap.password.useSalt=false
\ No newline at end of file
+++ /dev/null
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.argeo.commons</groupId>
- <version>2.1.13-SNAPSHOT</version>
- <artifactId>argeo-commons</artifactId>
- <relativePath>..</relativePath>
- </parent>
- <artifactId>org.argeo.security.auth.ldap</artifactId>
- <name>Commons Security Auth LDAP</name>
-</project>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.argeo.security.dao.cli</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.pde.PluginNature</nature>
- </natures>
-</projectDescription>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<beans:beans xmlns="http://www.springframework.org/schema/osgi"\r
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"\r
- xmlns:util="http://www.springframework.org/schema/util"\r
- xsi:schemaLocation="http://www.springframework.org/schema/osgi \r
- http://www.springframework.org/schema/osgi/spring-osgi-1.1.xsd\r
- http://www.springframework.org/schema/beans \r
- http://www.springframework.org/schema/beans/spring-beans-2.5.xsd\r
- http://www.springframework.org/schema/util\r
- http://www.springframework.org/schema/util/spring-util-2.5.xsd">\r
-\r
- <!-- REFERENCE -->\r
- <reference id="nodeRepository" interface="javax.jcr.Repository"\r
- filter="(argeo.jcr.repository.alias=node)" />\r
-\r
- <!-- SERVICES -->\r
- <service ref="authenticationManager"\r
- interface="org.springframework.security.authentication.AuthenticationManager" />\r
-\r
- <!-- User management -->\r
- <service ref="userDetailsManager"\r
- interface="org.springframework.security.core.userdetails.UserDetailsService"\r
- context-class-loader="service-provider" />\r
- <service ref="userDetailsManager"\r
- interface="org.springframework.security.provisioning.UserDetailsManager"\r
- context-class-loader="service-provider" />\r
- <service ref="userDetailsManager" interface="org.argeo.security.UserAdminService"\r
- context-class-loader="service-provider" />\r
-\r
- <!-- Callback handler and keyring -->\r
- <service interface="javax.security.auth.callback.CallbackHandler"\r
- ref="defaultCallbackHandler" />\r
- <service interface="org.argeo.security.crypto.CryptoKeyring"\r
- ref="keyring" />\r
-\r
-</beans:beans>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
-
- <bean
- class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
- <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
- <property name="locations">
- <value>osgibundle:security.properties</value>
- </property>
- </bean>
-
- <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>
-
- <bean id="authenticationManager"
- class="org.springframework.security.authentication.ProviderManager">
- <property name="providers">
- <list>
- <ref bean="authByAdapterProvider" />
- <ref bean="osJcrAuthenticationProvider" />
- </list>
- </property>
- </bean>
-
- <!-- Authentication providers -->
- <bean id="osJcrAuthenticationProvider" class="org.argeo.security.jcr.OsJcrAuthenticationProvider"
- init-method="init" destroy-method="destroy" depends-on="argeoDataModel">
- <property name="repository" ref="nodeRepository" />
- <property name="jcrSecurityModel" ref="jcrSecurityModel" />
- </bean>
-
- <bean name="jcrSecurityModel" class="org.argeo.security.jackrabbit.JackrabbitSecurityModel" />
-
- <bean id="authByAdapterProvider" class="org.argeo.security.core.InternalAuthenticationProvider">
- <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.authentication.ProviderManager">
- <property name="providers">
- <list>
- <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>
-
- <!-- Dummy user manager -->
- <bean id="userDetailsManager" class="org.argeo.security.jcr.OsJcrUserAdminService"
- init-method="init" destroy-method="destroy">
- <property name="repository" ref="nodeRepository" />
- </bean>
-
- <!-- Default callback handler and keyring -->
- <bean id="defaultCallbackHandler" class="org.argeo.security.core.ConsoleCallbackHandler" />
-
- <bean id="nodeSession" class="org.argeo.jcr.spring.ThreadBoundSession">
- <property name="repository" ref="nodeRepository" />
- </bean>
-
- <bean id="keyring" class="org.argeo.security.jcr.JcrKeyring">
- <property name="session" ref="nodeSession" />
- <property name="defaultCallbackHandler" ref="defaultCallbackHandler" />
- <property name="secreteKeyLength" value="${argeo.keyring.secreteKeyLength}" />
- </bean>
-</beans>
\ No newline at end of file
+++ /dev/null
-Import-Package: org.argeo.jcr,*
\ No newline at end of file
+++ /dev/null
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.argeo.commons</groupId>
- <version>2.1.13-SNAPSHOT</version>
- <artifactId>argeo-commons</artifactId>
- <relativePath>..</relativePath>
- </parent>
- <artifactId>org.argeo.security.dao.cli</artifactId>
- <name>Commons Security DAO CLI</name>
-</project>
\ No newline at end of file
+++ /dev/null
-argeo.security.systemKey=argeo
-argeo.node.repo.securityWorkspace=security
-argeo.keyring.secreteKeyLength=256
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.argeo.security.dao.jackrabbit</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.pde.PluginNature</nature>
- </natures>
-</projectDescription>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
-
- <!-- REMOTE -->
-
- <!-- <bean id="repositoryFactory" class="org.argeo.jackrabbit.OsgiJackrabbitRepositoryFactory"> -->
- <!-- <property name="bundleContext" ref="bundleContext" /> -->
- <!-- </bean> -->
-
- <!-- <bean id="authenticationManager" class="org.springframework.security.authentication.ProviderManager"> -->
- <!-- <property name="providers"> -->
- <!-- <list> -->
- <!-- <ref bean="authByAdapterProvider" /> -->
- <!-- <ref bean="remoteJcrAuthenticationProvider" /> -->
- <!-- </list> -->
- <!-- </property> -->
- <!-- </bean> -->
-
- <!-- <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> -->
-
- <!-- <bean id="userDetailsManager" class="org.argeo.security.jcr.OsJcrUserAdminService" -->
- <!-- init-method="init" destroy-method="destroy"> -->
- <!-- </bean> -->
-
-</beans>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<beans:beans xmlns="http://www.springframework.org/schema/osgi"\r
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"\r
- xmlns:util="http://www.springframework.org/schema/util"\r
- xsi:schemaLocation="http://www.springframework.org/schema/osgi \r
- http://www.springframework.org/schema/osgi/spring-osgi-1.1.xsd\r
- http://www.springframework.org/schema/beans \r
- http://www.springframework.org/schema/beans/spring-beans-2.5.xsd\r
- http://www.springframework.org/schema/util\r
- http://www.springframework.org/schema/util/spring-util-2.5.xsd">\r
-\r
- <!-- REFERENCE -->\r
- <reference id="nodeRepository" interface="javax.jcr.Repository"\r
- filter="(argeo.jcr.repository.alias=node)" />\r
-\r
- <!-- SERVICES -->\r
- <service ref="authenticationManager"\r
- interface="org.springframework.security.authentication.AuthenticationManager" />\r
-\r
- <!-- User management -->\r
- <service ref="userDetailsManager"\r
- interface="org.springframework.security.core.userdetails.UserDetailsService" />\r
- <service ref="userDetailsManager"\r
- interface="org.springframework.security.provisioning.UserDetailsManager" />\r
- <service ref="userDetailsManager" interface="org.argeo.security.UserAdminService" />\r
-\r
-</beans:beans>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
-
- <bean
- class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
- <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
- <property name="locations">
- <value>osgibundle:security.properties</value>
- </property>
- </bean>
-
- <bean id="authenticationManager"
- class="org.springframework.security.authentication.ProviderManager">
- <property name="providers">
- <list>
- <ref bean="authByAdapterProvider" />
- <ref bean="anonymousAuthenticationProvider" />
- <ref bean="userDetailsManager" />
- </list>
- </property>
- </bean>
-
- <!-- Authentication providers -->
- <bean id="authByAdapterProvider" class="org.argeo.security.core.InternalAuthenticationProvider">
- <property name="key" value="${argeo.security.systemKey}" />
- </bean>
-
- <bean id="anonymousAuthenticationProvider"
- class="org.springframework.security.authentication.AnonymousAuthenticationProvider">
- <description><![CDATA[Anonymous authentication]]></description>
- <property name="key" value="${argeo.security.systemKey}" />
- </bean>
-
- <!-- User manager -->
- <bean id="userDetailsManager"
- class="org.argeo.security.jcr.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.authentication.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
+++ /dev/null
-Import-Package: org.argeo.jcr,*
\ No newline at end of file
+++ /dev/null
-bin.includes = META-INF/
+++ /dev/null
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.argeo.commons</groupId>
- <version>2.1.13-SNAPSHOT</version>
- <artifactId>argeo-commons</artifactId>
- <relativePath>..</relativePath>
- </parent>
- <artifactId>org.argeo.security.dao.jackrabbit</artifactId>
- <name>Commons Security DAO Jackrabbit</name>
-</project>
\ No newline at end of file
+++ /dev/null
-argeo.security.systemKey=argeo
-argeo.node.repo.alias=node
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.argeo.security.dao.ldap</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.pde.PluginNature</nature>
- </natures>
-</projectDescription>
+++ /dev/null
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:security="http://www.springframework.org/schema/security"
- 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-2.5.xsd
- http://www.springframework.org/schema/security
- http://www.springframework.org/schema/security/spring-security-2.0.4.xsd
- http://www.springframework.org/schema/util
- http://www.springframework.org/schema/util/spring-util-2.5.xsd">
-
- <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>
-
- <bean id="jcrLdapSynchronizer" class="org.argeo.security.ldap.jcr.JcrLdapSynchronizer"
- init-method="init" destroy-method="destroy" depends-on="argeoDataModel">
- <!-- LDAP -->
- <property name="usernameAttribute" value="${argeo.ldap.usernameAttribute}" />
- <property name="passwordAttribute" value="${argeo.ldap.passwordAttribute}" />
- <property name="userClasses">
- <list>
- <value>${argeo.ldap.userClass}</value>
- </list>
- </property>
- <property name="passwordEncoder" ref="passwordEncoder" />
- <property name="userBase" value="${argeo.ldap.userBase}" />
- <property name="usernameMapper" ref="usernameMapper" />
- <property name="ldapTemplate" ref="ldapTemplate" />
- <property name="rawLdapTemplate" ref="rawLdapTemplate" />
- <!-- JCR -->
- <property name="repository" ref="nodeRepository" />
- <property name="jcrSecurityModel" ref="jcrSecurityModel" />
- <property name="propertyToAttributes" ref="propertyToAttributes" />
- </bean>
-
- <bean name="jcrSecurityModel" class="org.argeo.security.jackrabbit.JackrabbitSecurityModel" />
-
- <!-- LDAP / JCR mapping -->
- <util:map id="propertyToAttributes">
- <entry value="cn">
- <key>
- <util:constant static-field="javax.jcr.Property.JCR_TITLE" />
- </key>
- </entry>
- <entry value="description">
- <key>
- <util:constant static-field="javax.jcr.Property.JCR_DESCRIPTION" />
- </key>
- </entry>
- <entry value="givenName">
- <key>
- <util:constant static-field="org.argeo.jcr.ArgeoNames.ARGEO_FIRST_NAME" />
- </key>
- </entry>
- <entry value="sn">
- <key>
- <util:constant static-field="org.argeo.jcr.ArgeoNames.ARGEO_LAST_NAME" />
- </key>
- </entry>
- <entry value="mail">
- <key>
- <util:constant static-field="org.argeo.jcr.ArgeoNames.ARGEO_PRIMARY_EMAIL" />
- </key>
- </entry>
- <entry value="o">
- <key>
- <util:constant static-field="org.argeo.jcr.ArgeoNames.ARGEO_PRIMARY_ORGANIZATION" />
- </key>
- </entry>
- </util:map>
-</beans>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<beans:beans xmlns="http://www.springframework.org/schema/osgi"\r
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"\r
- xsi:schemaLocation="http://www.springframework.org/schema/osgi \r
- http://www.springframework.org/schema/osgi/spring-osgi-1.1.xsd\r
- http://www.springframework.org/schema/beans \r
- http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
-\r
- <!-- REFERENCES -->\r
- <reference id="nodeRepository" interface="javax.jcr.Repository"\r
- filter="(argeo.jcr.repository.alias=node)" />\r
-\r
- <!-- SERVICES -->\r
- <service ref="authenticationManager"\r
- interface="org.springframework.security.authentication.AuthenticationManager"\r
- context-class-loader="service-provider" />\r
-\r
- <!-- User management -->\r
- <service ref="userDetailsManager"\r
- interface="org.springframework.security.core.userdetails.UserDetailsService"\r
- context-class-loader="service-provider" />\r
- <service ref="userDetailsManager"\r
- interface="org.springframework.security.provisioning.UserDetailsManager"\r
- context-class-loader="service-provider" />\r
- <service ref="userDetailsManager" interface="org.argeo.security.UserAdminService"\r
- context-class-loader="service-provider" />\r
-</beans:beans>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
-
- <bean id="authenticationManager"
- class="org.springframework.security.authentication.ProviderManager">
- <property name="providers">
- <list>
- <!-- <ref bean="authByAdapterProvider" /> -->
- <!-- <ref bean="preAuthProvider" /> -->
- <ref bean="anonymousAuthenticationProvider" />
- <ref bean="rememberMeAuthenticationProvider" />
- <ref bean="ldapAuthenticationProvider" />
- </list>
- </property>
- </bean>
-
- <!-- Authentication provider -->
- <bean id="authByAdapterProvider" class="org.argeo.security.core.InternalAuthenticationProvider">
- <description><![CDATA[System authentication]]></description>
- <property name="key" value="${argeo.security.systemKey}" />
- </bean>
-
- <!-- <bean id="preAuthProvider" -->
- <!-- class="org.springframework.security.providers.preauth.PreAuthenticatedAuthenticationProvider"> -->
- <!-- <description><![CDATA[Pre-authentication]]></description> -->
- <!-- <property name="preAuthenticatedUserDetailsService"> -->
- <!-- <bean id="userDetailsServiceWrapper" -->
- <!-- class="org.springframework.security.userdetails.UserDetailsByNameServiceWrapper"> -->
- <!-- <property name="userDetailsService" ref="userDetailsManager" /> -->
- <!-- </bean> -->
- <!-- </property> -->
- <!-- </bean> -->
-
- <bean id="anonymousAuthenticationProvider"
- class="org.springframework.security.authentication.AnonymousAuthenticationProvider">
- <description><![CDATA[Anonymous authentication]]></description>
- <property name="key" value="${argeo.security.systemKey}" />
- </bean>
-
- <!-- <bean id="rememberMeAuthenticationProvider" -->
- <!-- class="org.springframework.security.providers.rememberme.RememberMeAuthenticationProvider"> -->
- <!-- <description><![CDATA[Remember me authentication]]></description> -->
- <!-- <property name="key" value="${argeo.security.systemKey}" /> -->
- <!-- </bean> -->
-
- <!-- Internal authentication, used by during the general authentication
- initialization himself, in order to prevent the following dependency cycle:
- Repository.login() <= AuthenticationManager <= LdapAuthenticationProvider
- <= Repository.login() in init() -->
- <bean id="internalAuthenticationManager"
- class="org.springframework.security.authentication.ProviderManager">
- <property name="providers">
- <list>
- <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
+++ /dev/null
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:security="http://www.springframework.org/schema/security"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
- http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.4.xsd">
-
- <!-- COMMON -->
- <bean
- class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
- <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
- <property name="locations">
- <value>osgibundle:ldap.properties</value>
- </property>
- </bean>
-
- <!-- AUTHENTICATION -->
- <bean id="ldapAuthenticationProvider"
- class="org.springframework.security.ldap.authentication.LdapAuthenticationProvider">
- <constructor-arg ref="ldapAuthenticator" />
- <constructor-arg ref="authoritiesPopulator" />
- <property name="userDetailsContextMapper" ref="jcrLdapSynchronizer" />
- </bean>
-
- <!-- PasswordComparisonAuthenticator doesn't work with SSHA -->
- <bean id="ldapAuthenticator"
- class="org.springframework.security.ldap.authentication.PasswordComparisonAuthenticator">
- <constructor-arg ref="contextSource" />
- <property name="userDnPatterns">
- <list>
- <value><![CDATA[${argeo.ldap.usernameAttribute}={0},${argeo.ldap.userBase}]]></value>
- </list>
- </property>
- <property name="passwordAttributeName" value="${argeo.ldap.passwordAttribute}" />
- <property name="passwordEncoder" ref="passwordEncoder" />
- </bean>
-
- <!-- Bind authenticator doesn't work with Apache DS 1.0 -->
- <!-- <bean id="ldapAuthenticator" -->
- <!-- class="org.springframework.security.ldap.authentication.BindAuthenticator"> -->
- <!-- <constructor-arg ref="contextSource" /> -->
- <!-- <property name="userDnPatterns"> -->
- <!-- <list> -->
- <!-- <value><![CDATA[${argeo.ldap.usernameAttribute}={0},${argeo.ldap.userBase}]]></value> -->
- <!-- </list> -->
- <!-- </property> -->
- <!-- </bean> -->
-
- <!-- USER DETAILS -->
- <bean id="userDetailsManager" class="org.argeo.security.ldap.ArgeoLdapUserDetailsManager">
- <constructor-arg ref="contextSource" />
- <property name="groupSearchBase" value="${argeo.ldap.groupBase}" />
- <property name="groupMemberAttributeName" value="${argeo.ldap.groupMemberAttribute}" />
- <property name="usernameMapper" ref="usernameMapper" />
- <property name="userDetailsMapper" ref="jcrLdapSynchronizer" />
- <property name="userAdminDao" ref="userAdminDao" />
- <property name="passwordEncoder" ref="passwordEncoder" />
- <property name="passwordAttributeName" value="${argeo.ldap.passwordAttribute}" />
- <property name="superUsername" value="${argeo.security.superUsername}" />
- </bean>
-
- <bean id="userAdminDao" class="org.argeo.security.ldap.ArgeoUserAdminDaoLdap">
- <constructor-arg ref="contextSource" />
- <property name="userBase" value="${argeo.ldap.userBase}" />
- <property name="usernameAttribute" value="${argeo.ldap.usernameAttribute}" />
- <property name="groupClasses">
- <list>
- <value>top</value>
- <value>${argeo.ldap.groupClass}</value>
- </list>
- </property>
- <property name="groupBase" value="${argeo.ldap.groupBase}" />
- <property name="groupRoleAttribute" value="${argeo.ldap.groupRoleAttribute}" />
- <property name="groupMemberAttribute" value="${argeo.ldap.groupMemberAttribute}" />
- <property name="defaultRole" value="${argeo.security.defaultRole}" />
- <property name="rolePrefix" value="${argeo.security.rolePrefix}" />
- <property name="usernameMapper" ref="usernameMapper" />
- </bean>
-
- <bean id="usernameMapper"
- class="org.springframework.security.ldap.DefaultLdapUsernameToDnMapper">
- <constructor-arg value="${argeo.ldap.userBase}" />
- <constructor-arg value="${argeo.ldap.usernameAttribute}" />
- </bean>
-
- <bean id="authoritiesPopulator"
- class="org.springframework.security.ldap.userdetails.DefaultLdapAuthoritiesPopulator">
- <constructor-arg ref="contextSource" />
- <constructor-arg value="${argeo.ldap.groupBase}" />
- <property name="groupSearchFilter" value="${argeo.ldap.groupMemberAttribute}={0}" />
- <property name="defaultRole" value="${argeo.security.defaultRole}" />
- <property name="rolePrefix" value="${argeo.security.rolePrefix}" />
- </bean>
-
- <!-- LDAP LOW LEVEL -->
- <bean id="contextSource"
- class="org.springframework.security.ldap.DefaultSpringSecurityContextSource">
- <constructor-arg
- value="${argeo.ldap.protocol}://${argeo.ldap.host}:${argeo.ldap.port}/${argeo.ldap.rootdn}" />
- <property name="userDn" value="${argeo.ldap.manager.userdn}" />
- <property name="password" value="${argeo.ldap.manager.password}" />
- </bean>
-
- <bean id="ldapTemplate" class="org.springframework.ldap.core.LdapTemplate">
- <constructor-arg ref="contextSource" />
- </bean>
-
- <bean id="rawLdapTemplate" class="org.springframework.ldap.core.LdapTemplate">
- <description><![CDATA[LDAP template returning raw dir contexts, see http://forum.springsource.org/showthread.php?55955-Persistent-search-with-spring-ldap]]></description>
- <constructor-arg>
- <bean parent="contextSource">
- <property name="dirObjectFactory">
- <null />
- </property>
- </bean>
- </constructor-arg>
- </bean>
-
- <bean id="passwordEncoder" class="org.argeo.security.ldap.ArgeoLdapShaPasswordEncoder">
- <property name="useSalt" value="${argeo.ldap.password.useSalt}" />
- </bean>
-</beans>
+++ /dev/null
-Import-Package: org.argeo.jcr,\
-com.sun.jndi.ldap;resolution:=optional,\
-org.springframework.ldap.core.support,\
-*
\ No newline at end of file
+++ /dev/null
-bin.includes = META-INF/
+++ /dev/null
-argeo.security.defaultRole=ROLE_USER
-argeo.security.rolePrefix=ROLE_
-
-argeo.security.systemKey=argeo
-argeo.security.superUsername=root
-
-argeo.ldap.rootdn=dc=demo,dc=example,dc=org
-argeo.ldap.protocol=ldap
-argeo.ldap.host=localhost
-# default are for Apache Directory Server
-argeo.ldap.port=10389
-argeo.ldap.manager.userdn=uid=admin,ou=system
-argeo.ldap.manager.password=secret
-
-# USER
-argeo.ldap.userClass=inetOrgPerson
-argeo.ldap.osUserClass=posixAccount
-argeo.ldap.userBase=ou=People
-argeo.ldap.usernameAttribute=uid
-argeo.ldap.passwordAttribute=userPassword
-# ROLES
-argeo.ldap.groupClass=groupOfNames
-argeo.ldap.groupBase=ou=Roles
-argeo.ldap.groupRoleAttribute=cn
-argeo.ldap.groupMemberAttribute=member
-# OS GROUPS
-argeo.ldap.osGroupClass=posixGroup
-argeo.ldap.osGroupBase=ou=Group
-argeo.ldap.osGroupNameAttribute=cn
-argeo.ldap.osGroupMemberAttribute=memberUid
-
-argeo.ldap.password.useSalt=false
\ No newline at end of file
+++ /dev/null
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.argeo.commons</groupId>
- <version>2.1.13-SNAPSHOT</version>
- <artifactId>argeo-commons</artifactId>
- <relativePath>..</relativePath>
- </parent>
- <artifactId>org.argeo.security.dao.ldap</artifactId>
- <name>Commons Security DAO LDAP</name>
-</project>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="src" path="src" />
- <classpathentry kind="con"
- path="org.eclipse.pde.core.requiredPlugins" />
- <classpathentry kind="con"
- path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6" />
- <classpathentry kind="output" path="bin" />
-</classpath>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.argeo.security.equinox</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.pde.PluginNature</nature>
- <nature>org.eclipse.jdt.core.javanature</nature>
- </natures>
-</projectDescription>
+++ /dev/null
-<?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:p="http://www.springframework.org/schema/p"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans.xsd">
-
- <bean
- class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
- <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
- <property name="locations">
- <value>osgibundle:security.properties</value>
- </property>
- </bean>
-
- <bean id="springLoginModule" class="org.argeo.security.equinox.SpringLoginModule"
- scope="prototype">
- <property name="authenticationManager" ref="authenticationManager" />
- <property name="availableLocales" value="${argeo.i18n.availableLocales}"/>
- </bean>
-
- <bean id="springLoginModuleRemote" class="org.argeo.security.equinox.SpringLoginModule"
- scope="prototype">
- <property name="remote" value="true" />
- <property name="authenticationManager" ref="authenticationManager" />
- </bean>
-
- <bean id="anonymousSpringLoginModule" class="org.argeo.security.equinox.SpringLoginModule"
- scope="prototype">
- <property name="anonymous" value="true" />
- <property name="anonymousRole" value="${argeo.security.anonymousRole}" />
- <property name="key" value="${argeo.security.systemKey}" />
- <property name="authenticationManager" ref="authenticationManager" />
- </bean>
-
- <bean id="osSpringLoginModule" class="org.argeo.security.equinox.OsSpringLoginModule"
- scope="prototype">
- <property name="authenticationManager" ref="authenticationManager" />
- </bean>
-</beans>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<beans:beans xmlns="http://www.springframework.org/schema/osgi"\r
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"\r
- xmlns:osgi="http://www.springframework.org/schema/osgi"\r
- xsi:schemaLocation="http://www.springframework.org/schema/osgi \r
- http://www.springframework.org/schema/osgi/spring-osgi-1.1.xsd\r
- http://www.springframework.org/schema/beans \r
- http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"\r
- osgi:default-timeout="30000">\r
-\r
- <reference id="authenticationManager"\r
- interface="org.springframework.security.authentication.AuthenticationManager"\r
- context-class-loader="client" />\r
-</beans:beans>
\ No newline at end of file
+++ /dev/null
-source.. = src/
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.4"?>
-<plugin>
- <!-- Argeo -->
- <extension id="springLoginModule" name="Argeo Spring" point="org.eclipse.equinox.security.loginModule">
- <loginModule class="org.argeo.eclipse.spring.SpringExtensionFactory" description="Username/password authentication"/>
- </extension>
-
- <extension id="springLoginModuleRemote" name="Argeo Spring Remote" point="org.eclipse.equinox.security.loginModule">
- <loginModule class="org.argeo.eclipse.spring.SpringExtensionFactory" description="Delegates authentication to a remote URL (typically JCR)"/>
- </extension>
-
- <extension id="anonymousSpringLoginModule" name="Argeo Spring Anonymous" point="org.eclipse.equinox.security.loginModule">
- <loginModule class="org.argeo.eclipse.spring.SpringExtensionFactory" description="Public access without authentication"/>
- </extension>
-
- <extension id="osSpringLoginModule" name="Argeo Spring OS" point="org.eclipse.equinox.security.loginModule">
- <loginModule class="org.argeo.eclipse.spring.SpringExtensionFactory" description="Use the operating system authentication of the JVM"/>
- </extension>
-
- <!-- Java -->
- <extension id="unixLoginModule" name="UNIX" point="org.eclipse.equinox.security.loginModule">
- <loginModule class="com.sun.security.auth.module.UnixLoginModule" description="UNIX Login Module"/>
- </extension>
-
- <extension id="keyStoreLoginModule" name="Keystore" point="org.eclipse.equinox.security.loginModule">
- <loginModule class="com.sun.security.auth.module.KeyStoreLoginModule" description="Keystore Login Module"/>
- </extension>
-
- <extension id="ntLoginModule" name="Windows" point="org.eclipse.equinox.security.loginModule">
- <loginModule class="com.sun.security.auth.module.NTLoginModule" description="Windows Login Module"/>
- </extension>
-
- <!-- Spring -->
- <extension id="springSecurityContextLoginModule" name="Spring" point="org.eclipse.equinox.security.loginModule">
- <loginModule class="org.springframework.security.providers.jaas.SecurityContextLoginModule" description="Raw Spring Login Module"/>
- </extension>
-</plugin>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.argeo.commons</groupId>
- <version>2.1.13-SNAPSHOT</version>
- <artifactId>argeo-commons</artifactId>
- <relativePath>..</relativePath>
- </parent>
- <artifactId>org.argeo.security.equinox</artifactId>
- <name>Commons Security Equinox</name>
- <packaging>jar</packaging>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-source-plugin</artifactId>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- </plugin>
- <plugin>
- <groupId>org.apache.felix</groupId>
- <artifactId>maven-bundle-plugin</artifactId>
- <configuration>
- <instructions>
- <Bundle-SymbolicName>${project.artifactId};singleton:=true</Bundle-SymbolicName>
- <Import-Package>*,
- org.springframework.core,
- org.argeo.eclipse.spring
- </Import-Package>
- </instructions>
- </configuration>
- </plugin>
- </plugins>
- </build>
- <dependencies>
-
- <!-- Eclipse -->
-<!-- <dependency> -->
-<!-- <groupId>org.argeo.tp</groupId> -->
-<!-- <artifactId>org.eclipse.osgi</artifactId> -->
-<!-- </dependency> -->
-
- <!-- Generic Eclipse Utilities -->
- <dependency>
- <groupId>org.argeo.commons</groupId>
- <artifactId>org.argeo.eclipse.ui.workbench</artifactId>
- <version>2.1.13-SNAPSHOT</version>
- </dependency>
-
- <!-- RAP only dependency, needed at compile time -->
- <!-- <dependency>
- <groupId>org.argeo.commons</groupId>
- <artifactId>org.argeo.eclipse.dep.rap</artifactId>
- <type>pom</type>
- <version>2.1.12-SNAPSHOT</version>
- <scope>provided</scope>
- </dependency> -->
-
- <!-- Commons -->
- <dependency>
- <groupId>org.argeo.commons</groupId>
- <artifactId>org.argeo.util</artifactId>
- <version>2.1.13-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>org.argeo.commons</groupId>
- <artifactId>org.argeo.security.core</artifactId>
- <version>2.1.13-SNAPSHOT</version>
- </dependency>
-
- <!-- Spring -->
-<!-- <dependency> -->
-<!-- <groupId>org.argeo.tp</groupId> -->
-<!-- <artifactId>org.springframework.security.core</artifactId> -->
-<!-- </dependency> -->
- </dependencies>
-</project>
\ No newline at end of file
+++ /dev/null
-argeo.security.systemKey=argeo
-
-argeo.security.anonymousRole=ROLE_ANONYMOUS
-
-argeo.i18n.availableLocales=
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (C) 2007-2012 Argeo GmbH
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.argeo.security.equinox;
-
-import java.util.Map;
-
-import javax.security.auth.Subject;
-import javax.security.auth.callback.CallbackHandler;
-import javax.security.auth.login.LoginException;
-
-import org.argeo.security.OsAuthenticationToken;
-import org.springframework.security.authentication.AuthenticationManager;
-import org.springframework.security.authentication.jaas.SecurityContextLoginModule;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.context.SecurityContextHolder;
-
-/** Login module which caches one subject per thread. */
-public class OsSpringLoginModule extends SecurityContextLoginModule {
- // private final static Log log =
- // LogFactory.getLog(OsSpringLoginModule.class);
-
- private AuthenticationManager authenticationManager;
-
- private Subject subject;
-
- public OsSpringLoginModule() {
-
- }
-
- @SuppressWarnings("rawtypes")
- public void initialize(Subject subject, CallbackHandler callbackHandler,
- Map sharedState, Map options) {
- super.initialize(subject, callbackHandler, sharedState, options);
- this.subject = subject;
- }
-
- public boolean login() throws LoginException {
- // thread already logged in
- if (SecurityContextHolder.getContext().getAuthentication() != null)
- return super.login();
-
- OsAuthenticationToken oat = new OsAuthenticationToken();
- Authentication authentication = authenticationManager.authenticate(oat);
- registerAuthentication(authentication);
- return super.login();
- }
-
- @Override
- public boolean logout() throws LoginException {
- subject.getPrincipals().clear();
- return super.logout();
- }
-
- /**
- * Register an {@link Authentication} in the security context.
- *
- * @param authentication
- * has to implement {@link Authentication}.
- */
- protected void registerAuthentication(Object authentication) {
- SecurityContextHolder.getContext().setAuthentication(
- (Authentication) authentication);
- }
-
- public void setAuthenticationManager(
- AuthenticationManager authenticationManager) {
- this.authenticationManager = authenticationManager;
- }
-}
+++ /dev/null
-/*
- * Copyright (C) 2007-2012 Argeo GmbH
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.argeo.security.equinox;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.UUID;
-
-import javax.security.auth.Subject;
-import javax.security.auth.callback.Callback;
-import javax.security.auth.callback.CallbackHandler;
-import javax.security.auth.callback.NameCallback;
-import javax.security.auth.callback.PasswordCallback;
-import javax.security.auth.login.LoginException;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.argeo.security.NodeAuthenticationToken;
-import org.argeo.util.LocaleCallback;
-import org.argeo.util.LocaleUtils;
-import org.springframework.security.authentication.AnonymousAuthenticationToken;
-import org.springframework.security.authentication.AuthenticationManager;
-import org.springframework.security.authentication.BadCredentialsException;
-import org.springframework.security.authentication.jaas.SecurityContextLoginModule;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.authority.SimpleGrantedAuthority;
-import org.springframework.security.core.context.SecurityContextHolder;
-
-/** Login module which caches one subject per thread. */
-public class SpringLoginModule extends SecurityContextLoginModule {
- final static String NODE_REPO_URI = "argeo.node.repo.uri";
-
- private final static Log log = LogFactory.getLog(SpringLoginModule.class);
-
- private AuthenticationManager authenticationManager;
-
- private CallbackHandler callbackHandler;
-
- private Subject subject;
-
- private Long waitBetweenFailedLoginAttempts = 5 * 1000l;
-
- private Boolean remote = false;
- private Boolean anonymous = false;
- /** Comma separated list of locales */
- private String availableLocales = "";
-
- private String key = null;
- private String anonymousRole = "ROLE_ANONYMOUS";
-
- public SpringLoginModule() {
-
- }
-
- @SuppressWarnings("rawtypes")
- public void initialize(Subject subject, CallbackHandler callbackHandler,
- Map sharedState, Map options) {
- super.initialize(subject, callbackHandler, sharedState, options);
- this.callbackHandler = callbackHandler;
- this.subject = subject;
- }
-
- public boolean login() throws LoginException {
- try {
- // thread already logged in
- if (SecurityContextHolder.getContext().getAuthentication() != null)
- return super.login();
-
- if (remote && anonymous)
- throw new LoginException(
- "Cannot have a Spring login module which is remote and anonymous");
-
- // reset all principals and credentials
- if (log.isTraceEnabled())
- log.trace("Resetting all principals and credentials of "
- + subject);
- if (subject.getPrincipals() != null)
- subject.getPrincipals().clear();
- if (subject.getPrivateCredentials() != null)
- subject.getPrivateCredentials().clear();
- if (subject.getPublicCredentials() != null)
- subject.getPublicCredentials().clear();
-
- Locale selectedLocale = null;
- // deals first with public access since it's simple
- if (anonymous) {
- // multi locale
- if (callbackHandler != null && availableLocales != null
- && !availableLocales.trim().equals("")) {
- LocaleCallback localeCallback = new LocaleCallback(
- availableLocales);
- callbackHandler.handle(new Callback[] { localeCallback });
- selectedLocale = localeCallback.getSelectedLocale();
- }
-
- // TODO integrate with JCR?
- Object principal = UUID.randomUUID().toString();
- List<SimpleGrantedAuthority> authorities = Collections
- .singletonList(new SimpleGrantedAuthority(anonymousRole));
- AnonymousAuthenticationToken anonymousToken = new AnonymousAuthenticationToken(
- key, principal, authorities);
- Authentication auth = authenticationManager
- .authenticate(anonymousToken);
- registerAuthentication(auth);
- } else {
- if (callbackHandler == null)
- throw new LoginException("No call back handler available");
-
- // ask for username and password
- NameCallback nameCallback = new NameCallback("User");
- PasswordCallback passwordCallback = new PasswordCallback(
- "Password", false);
- final String defaultNodeUrl = System
- .getProperty(NODE_REPO_URI,
- "http://localhost:7070/org.argeo.jcr.webapp/remoting/node");
- NameCallback urlCallback = new NameCallback("Site URL",
- defaultNodeUrl);
- LocaleCallback localeCallback = new LocaleCallback(
- availableLocales);
-
- // handle callbacks
- if (remote)
- callbackHandler.handle(new Callback[] { nameCallback,
- passwordCallback, urlCallback, localeCallback });
- else
- callbackHandler.handle(new Callback[] { nameCallback,
- passwordCallback, localeCallback });
-
- selectedLocale = localeCallback.getSelectedLocale();
-
- // create credentials
- String username = nameCallback.getName();
- if (username == null || username.trim().equals(""))
- return false;
-
- String password = "";
- if (passwordCallback.getPassword() != null)
- password = String.valueOf(passwordCallback.getPassword());
-
- NodeAuthenticationToken credentials;
- if (remote) {
- String url = urlCallback.getName();
- credentials = new NodeAuthenticationToken(username,
- password, url);
- } else {
- credentials = new NodeAuthenticationToken(username,
- password);
- }
-
- Authentication authentication;
- try {
- authentication = authenticationManager
- .authenticate(credentials);
- } catch (BadCredentialsException e) {
- // wait between failed login attempts
- Thread.sleep(waitBetweenFailedLoginAttempts);
- throw e;
- }
- registerAuthentication(authentication);
- }
-
- if (selectedLocale != null)
- LocaleUtils.threadLocale.set(selectedLocale);
-
- return super.login();
- } catch (LoginException e) {
- throw e;
- } catch (ThreadDeath e) {
- LoginException le = new LoginException(
- "Spring Security login thread died");
- le.initCause(e);
- throw le;
- } catch (Exception e) {
- LoginException le = new LoginException(
- "Spring Security login failed");
- le.initCause(e);
- throw le;
- }
- }
-
- @Override
- public boolean logout() throws LoginException {
- subject.getPrincipals().clear();
- return super.logout();
- }
-
- /**
- * Register an {@link Authentication} in the security context.
- *
- * @param authentication
- * has to implement {@link Authentication}.
- */
- protected void registerAuthentication(Object authentication) {
- SecurityContextHolder.getContext().setAuthentication(
- (Authentication) authentication);
- }
-
- public void setAuthenticationManager(
- AuthenticationManager authenticationManager) {
- this.authenticationManager = authenticationManager;
- }
-
- /** Authenticates on a remote node */
- public void setRemote(Boolean remote) {
- this.remote = remote;
- }
-
- /**
- * Request anonymous authentication (incompatible with remote)
- */
- public void setAnonymous(Boolean anonymous) {
- this.anonymous = anonymous;
- }
-
- /** Role identifying an anonymous user */
- public void setAnonymousRole(String anonymousRole) {
- this.anonymousRole = anonymousRole;
- }
-
- /** System key */
- public void setKey(String key) {
- this.key = key;
- }
-
- public void setAvailableLocales(String locales) {
- this.availableLocales = locales;
- }
-
-}