diff --git a/modules/pom.xml b/modules/pom.xml
index d827cd4..474f9a4 100644
--- a/modules/pom.xml
+++ b/modules/pom.xml
@@ -16,8 +16,9 @@
foo
reporting
- i18n
- winauth
+ i18n
+ winauth-ad
+ winauth-sso
async
diff --git a/modules/winauth/pom.xml b/modules/winauth-ad/pom.xml
similarity index 94%
rename from modules/winauth/pom.xml
rename to modules/winauth-ad/pom.xml
index 23cce86..399390f 100644
--- a/modules/winauth/pom.xml
+++ b/modules/winauth-ad/pom.xml
@@ -7,18 +7,12 @@
dev-SNAPSHOT
com.capgemini.devonfw.modules
- devonfw-winauth
+ devonfw-winauth-ad
${devonfw.version}
${project.artifactId}
Active Directory base authentication.
-
-
- com.github.dblock.waffle
- waffle-spring-security3
-
-
javax.servlet
diff --git a/modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/api/AuthenticationManagerAD.java b/modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/api/AuthenticationManagerAD.java
similarity index 86%
rename from modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/api/AuthenticationManagerAD.java
rename to modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/api/AuthenticationManagerAD.java
index bf9589f..ca8886f 100644
--- a/modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/api/AuthenticationManagerAD.java
+++ b/modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/api/AuthenticationManagerAD.java
@@ -1,4 +1,4 @@
-package com.capgemini.devonfw.module.winauth.common.api;
+package com.capgemini.devonfw.module.winauthad.common.api;
import org.springframework.security.ldap.authentication.LdapAuthenticationProvider;
diff --git a/modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/api/AuthenticationSource.java b/modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/api/AuthenticationSource.java
similarity index 97%
rename from modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/api/AuthenticationSource.java
rename to modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/api/AuthenticationSource.java
index d22f210..b275cb4 100644
--- a/modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/api/AuthenticationSource.java
+++ b/modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/api/AuthenticationSource.java
@@ -1,4 +1,4 @@
-package com.capgemini.devonfw.module.winauth.common.api;
+package com.capgemini.devonfw.module.winauthad.common.api;
import javax.naming.directory.Attributes;
diff --git a/modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/api/PrincipalProfile.java b/modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/api/PrincipalProfile.java
similarity index 93%
rename from modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/api/PrincipalProfile.java
rename to modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/api/PrincipalProfile.java
index 4d1b43e..a2461ad 100644
--- a/modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/api/PrincipalProfile.java
+++ b/modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/api/PrincipalProfile.java
@@ -1,4 +1,4 @@
-package com.capgemini.devonfw.module.winauth.common.api;
+package com.capgemini.devonfw.module.winauthad.common.api;
import java.security.Principal;
import java.util.List;
diff --git a/modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/api/UserData.java b/modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/api/UserData.java
similarity index 96%
rename from modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/api/UserData.java
rename to modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/api/UserData.java
index c0bae2f..a043452 100644
--- a/modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/api/UserData.java
+++ b/modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/api/UserData.java
@@ -1,4 +1,4 @@
-package com.capgemini.devonfw.module.winauth.common.api;
+package com.capgemini.devonfw.module.winauthad.common.api;
import java.security.Principal;
import java.util.Collection;
@@ -8,7 +8,7 @@
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.User;
-import com.capgemini.devonfw.module.winauth.common.api.to.UserDetailsClientToAD;
+import com.capgemini.devonfw.module.winauthad.common.api.to.UserDetailsClientToAD;
/**
* Container class for the profile of a user.
diff --git a/modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/api/Usermanagement.java b/modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/api/Usermanagement.java
similarity index 85%
rename from modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/api/Usermanagement.java
rename to modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/api/Usermanagement.java
index 3deaef9..b2533c1 100644
--- a/modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/api/Usermanagement.java
+++ b/modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/api/Usermanagement.java
@@ -1,4 +1,4 @@
-package com.capgemini.devonfw.module.winauth.common.api;
+package com.capgemini.devonfw.module.winauthad.common.api;
/**
* Interface to get a user from its login.
diff --git a/modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/api/accesscontrol/ActiveDirectory.java b/modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/api/accesscontrol/ActiveDirectory.java
similarity index 96%
rename from modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/api/accesscontrol/ActiveDirectory.java
rename to modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/api/accesscontrol/ActiveDirectory.java
index 23498d2..76cce05 100644
--- a/modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/api/accesscontrol/ActiveDirectory.java
+++ b/modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/api/accesscontrol/ActiveDirectory.java
@@ -1,4 +1,4 @@
-package com.capgemini.devonfw.module.winauth.common.api.accesscontrol;
+package com.capgemini.devonfw.module.winauthad.common.api.accesscontrol;
import java.util.Properties;
@@ -174,10 +174,7 @@ private String getFilter(String searchValue, String searchBy) {
String filter = this.baseFilter;
filter += "(" + searchBy + "=" + searchValue + "))";
- /*
- * if (searchBy.equals("email")) { filter += "(mail=" + searchValue + "))"; } else if (searchBy.equals("username"))
- * { filter += "(samaccountname=" + searchValue + "))"; }
- */
+
return filter;
}
diff --git a/modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/api/security/UserDataAD.java b/modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/api/security/UserDataAD.java
similarity index 94%
rename from modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/api/security/UserDataAD.java
rename to modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/api/security/UserDataAD.java
index c685223..b2b9295 100644
--- a/modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/api/security/UserDataAD.java
+++ b/modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/api/security/UserDataAD.java
@@ -1,4 +1,4 @@
-package com.capgemini.devonfw.module.winauth.common.api.security;
+package com.capgemini.devonfw.module.winauthad.common.api.security;
import java.security.Principal;
import java.util.Collection;
@@ -8,8 +8,8 @@
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.User;
-import com.capgemini.devonfw.module.winauth.common.api.PrincipalProfile;
-import com.capgemini.devonfw.module.winauth.common.api.to.UserDetailsClientToAD;
+import com.capgemini.devonfw.module.winauthad.common.api.PrincipalProfile;
+import com.capgemini.devonfw.module.winauthad.common.api.to.UserDetailsClientToAD;
/**
* Container class for the profile of a user.
diff --git a/modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/api/to/UserDetailsClientToAD.java b/modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/api/to/UserDetailsClientToAD.java
similarity index 92%
rename from modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/api/to/UserDetailsClientToAD.java
rename to modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/api/to/UserDetailsClientToAD.java
index 0c8269c..d3d878e 100644
--- a/modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/api/to/UserDetailsClientToAD.java
+++ b/modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/api/to/UserDetailsClientToAD.java
@@ -1,8 +1,8 @@
-package com.capgemini.devonfw.module.winauth.common.api.to;
+package com.capgemini.devonfw.module.winauthad.common.api.to;
import java.util.List;
-import com.capgemini.devonfw.module.winauth.common.api.PrincipalProfile;
+import com.capgemini.devonfw.module.winauthad.common.api.PrincipalProfile;
import io.oasp.module.basic.common.api.to.AbstractTo;
diff --git a/modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/impl/security/AuthenticationManagerImpl.java b/modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/impl/security/AuthenticationManagerImpl.java
similarity index 95%
rename from modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/impl/security/AuthenticationManagerImpl.java
rename to modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/impl/security/AuthenticationManagerImpl.java
index 9e8cc68..6f910b6 100644
--- a/modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/impl/security/AuthenticationManagerImpl.java
+++ b/modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/impl/security/AuthenticationManagerImpl.java
@@ -1,4 +1,4 @@
-package com.capgemini.devonfw.module.winauth.common.impl.security;
+package com.capgemini.devonfw.module.winauthad.common.impl.security;
import java.util.Properties;
@@ -16,7 +16,7 @@
import org.springframework.security.ldap.search.FilterBasedLdapUserSearch;
import org.springframework.security.ldap.userdetails.UserDetailsContextMapper;
-import com.capgemini.devonfw.module.winauth.common.api.AuthenticationManagerAD;
+import com.capgemini.devonfw.module.winauthad.common.api.AuthenticationManagerAD;
/**
* Implementation of {@link AuthenticationManagerAD}
@@ -149,12 +149,6 @@ public void setUserDetailsContextMapper(UserDetailsContextMapper userDetailsCont
this.userDetailsContextMapper = userDetailsContextMapper;
}
- // @Bean
- // public UserDetailsContextMapper UserDetailsContextMapper() {
- //
- // return new UserDetailsContextMapperAD();
- // }
-
/**
* The class BindAuthenticator in the package {@link org.springframework.security.ldap.authentication} implements the
* bind authentication strategy. It simply attempts to bind as the user.
diff --git a/modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/impl/security/AuthenticationSourceADImpl.java b/modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/impl/security/AuthenticationSourceADImpl.java
similarity index 95%
rename from modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/impl/security/AuthenticationSourceADImpl.java
rename to modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/impl/security/AuthenticationSourceADImpl.java
index 6b1ddc4..5e4cfce 100644
--- a/modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/impl/security/AuthenticationSourceADImpl.java
+++ b/modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/impl/security/AuthenticationSourceADImpl.java
@@ -1,4 +1,4 @@
-package com.capgemini.devonfw.module.winauth.common.impl.security;
+package com.capgemini.devonfw.module.winauthad.common.impl.security;
import java.util.Properties;
@@ -17,8 +17,8 @@
import org.springframework.security.config.annotation.authentication.configurers.ldap.LdapAuthenticationProviderConfigurer;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
-import com.capgemini.devonfw.module.winauth.common.api.AuthenticationSource;
-import com.capgemini.devonfw.module.winauth.common.api.accesscontrol.ActiveDirectory;
+import com.capgemini.devonfw.module.winauthad.common.api.AuthenticationSource;
+import com.capgemini.devonfw.module.winauthad.common.api.accesscontrol.ActiveDirectory;
/**
* Implementation of {@link AuthenticationSource}
@@ -186,7 +186,7 @@ public Attributes searchUserByUsername(String searchValue) {
} finally {
this.activeDirectory.closeLdapConnection();
}
- // (&((&(objectCategory=Person)(objectClass=User)))(samaccountname=Servidor Web))
+
try {
Attributes attrs = result.next().getAttributes();
return attrs;
diff --git a/modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/impl/security/GroupMapperAD.java b/modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/impl/security/GroupMapperAD.java
similarity index 96%
rename from modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/impl/security/GroupMapperAD.java
rename to modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/impl/security/GroupMapperAD.java
index 8c078f5..f5d23cf 100644
--- a/modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/impl/security/GroupMapperAD.java
+++ b/modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/impl/security/GroupMapperAD.java
@@ -1,4 +1,4 @@
-package com.capgemini.devonfw.module.winauth.common.impl.security;
+package com.capgemini.devonfw.module.winauthad.common.impl.security;
import java.util.ArrayList;
import java.util.HashMap;
diff --git a/modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/impl/security/PrincipalAccessControlProviderImplAD.java b/modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/impl/security/PrincipalAccessControlProviderImplAD.java
similarity index 79%
rename from modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/impl/security/PrincipalAccessControlProviderImplAD.java
rename to modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/impl/security/PrincipalAccessControlProviderImplAD.java
index 7346ca2..f2ecf82 100644
--- a/modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/impl/security/PrincipalAccessControlProviderImplAD.java
+++ b/modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/impl/security/PrincipalAccessControlProviderImplAD.java
@@ -1,16 +1,16 @@
-package com.capgemini.devonfw.module.winauth.common.impl.security;
+package com.capgemini.devonfw.module.winauthad.common.impl.security;
import java.util.Collection;
import javax.inject.Named;
-import com.capgemini.devonfw.module.winauth.common.api.PrincipalProfile;
+import com.capgemini.devonfw.module.winauthad.common.api.PrincipalProfile;
import io.oasp.module.security.common.api.accesscontrol.PrincipalAccessControlProvider;
/**
* Implementation of PrincipalAccessControlProvider
- *
+ *
* @author jhcore
*/
@Named
diff --git a/modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/impl/security/PrincipalProfileImpl.java b/modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/impl/security/PrincipalProfileImpl.java
similarity index 92%
rename from modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/impl/security/PrincipalProfileImpl.java
rename to modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/impl/security/PrincipalProfileImpl.java
index adfcfcd..e5204a9 100644
--- a/modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/impl/security/PrincipalProfileImpl.java
+++ b/modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/impl/security/PrincipalProfileImpl.java
@@ -1,9 +1,9 @@
-package com.capgemini.devonfw.module.winauth.common.impl.security;
+package com.capgemini.devonfw.module.winauthad.common.impl.security;
import java.util.List;
import java.util.Locale;
-import com.capgemini.devonfw.module.winauth.common.api.PrincipalProfile;
+import com.capgemini.devonfw.module.winauthad.common.api.PrincipalProfile;
/**
* Implementation of {@link PrincipalProfile}.
diff --git a/modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/impl/security/UserDetailsContextMapperAD.java b/modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/impl/security/UserDetailsContextMapperAD.java
similarity index 92%
rename from modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/impl/security/UserDetailsContextMapperAD.java
rename to modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/impl/security/UserDetailsContextMapperAD.java
index 050262e..6ac0abc 100644
--- a/modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/impl/security/UserDetailsContextMapperAD.java
+++ b/modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/common/impl/security/UserDetailsContextMapperAD.java
@@ -1,4 +1,4 @@
-package com.capgemini.devonfw.module.winauth.common.impl.security;
+package com.capgemini.devonfw.module.winauthad.common.impl.security;
import java.util.ArrayList;
import java.util.Collection;
@@ -15,15 +15,14 @@
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.security.ldap.userdetails.UserDetailsContextMapper;
-import com.capgemini.devonfw.module.winauth.common.api.AuthenticationSource;
-import com.capgemini.devonfw.module.winauth.common.api.UserData;
+import com.capgemini.devonfw.module.winauthad.common.api.AuthenticationSource;
+import com.capgemini.devonfw.module.winauthad.common.api.UserData;
/**
* Implementation of {@link UserDetailsContextMapper}
*
* @author jhcore
*/
-// @Named("UserDetailsContextMapperAD")
public class UserDetailsContextMapperAD implements UserDetailsContextMapper {
private static final Logger LOG = LoggerFactory.getLogger(AuthenticationManagerImpl.class);
diff --git a/modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/config/ModuleConfig.java b/modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/config/ModuleConfig.java
new file mode 100644
index 0000000..6fae0b7
--- /dev/null
+++ b/modules/winauth-ad/src/main/java/com/capgemini/devonfw/module/winauthad/config/ModuleConfig.java
@@ -0,0 +1,15 @@
+package com.capgemini.devonfw.module.winauthad.config;
+
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * Spring Boot autoconfiguration for WinauthAD module
+ *
+ * @author pparrado
+ *
+ */
+@Configuration
+@ComponentScan(basePackages = { "com.capgemini.devonfw.module.winauthad" })
+public class ModuleConfig {
+}
diff --git a/modules/winauth-ad/src/main/resources/META-INF/spring.factories b/modules/winauth-ad/src/main/resources/META-INF/spring.factories
new file mode 100644
index 0000000..73ebfef
--- /dev/null
+++ b/modules/winauth-ad/src/main/resources/META-INF/spring.factories
@@ -0,0 +1 @@
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.capgemini.devonfw.module.winauthad.config.ModuleConfig
\ No newline at end of file
diff --git a/modules/winauth/src/main/resources/application.properties b/modules/winauth-ad/src/main/resources/application.properties
similarity index 100%
rename from modules/winauth/src/main/resources/application.properties
rename to modules/winauth-ad/src/main/resources/application.properties
diff --git a/modules/winauth/src/test/java/com/capgemini/devonfw/module/winauth/base/AuthenticationManagerImplTest.java b/modules/winauth-ad/src/test/java/com/capgemini/devonfw/module/winauthad/base/AuthenticationManagerImplTest.java
similarity index 75%
rename from modules/winauth/src/test/java/com/capgemini/devonfw/module/winauth/base/AuthenticationManagerImplTest.java
rename to modules/winauth-ad/src/test/java/com/capgemini/devonfw/module/winauthad/base/AuthenticationManagerImplTest.java
index ddcb378..5b5023d 100644
--- a/modules/winauth/src/test/java/com/capgemini/devonfw/module/winauth/base/AuthenticationManagerImplTest.java
+++ b/modules/winauth-ad/src/test/java/com/capgemini/devonfw/module/winauthad/base/AuthenticationManagerImplTest.java
@@ -1,4 +1,4 @@
-package com.capgemini.devonfw.module.winauth.base;
+package com.capgemini.devonfw.module.winauthad.base;
import javax.inject.Inject;
@@ -7,9 +7,8 @@
import org.springframework.boot.test.SpringApplicationConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import com.capgemini.devonfw.module.winauth.SpringBootApp;
-import com.capgemini.devonfw.module.winauth.common.api.AuthenticationManagerAD;
-import com.capgemini.devonfw.module.winauth.common.impl.security.AuthenticationManagerImpl;
+import com.capgemini.devonfw.module.winauthad.common.api.AuthenticationManagerAD;
+import com.capgemini.devonfw.module.winauthad.common.impl.security.AuthenticationManagerImpl;
import io.oasp.module.test.common.base.ComponentTest;
diff --git a/modules/winauth/src/test/java/com/capgemini/devonfw/module/winauth/base/AuthenticationSourceADImplTest.java b/modules/winauth-ad/src/test/java/com/capgemini/devonfw/module/winauthad/base/AuthenticationSourceADImplTest.java
similarity index 85%
rename from modules/winauth/src/test/java/com/capgemini/devonfw/module/winauth/base/AuthenticationSourceADImplTest.java
rename to modules/winauth-ad/src/test/java/com/capgemini/devonfw/module/winauthad/base/AuthenticationSourceADImplTest.java
index 45a8da7..b59d4c6 100644
--- a/modules/winauth/src/test/java/com/capgemini/devonfw/module/winauth/base/AuthenticationSourceADImplTest.java
+++ b/modules/winauth-ad/src/test/java/com/capgemini/devonfw/module/winauthad/base/AuthenticationSourceADImplTest.java
@@ -1,4 +1,4 @@
-package com.capgemini.devonfw.module.winauth.base;
+package com.capgemini.devonfw.module.winauthad.base;
import javax.inject.Inject;
@@ -7,9 +7,8 @@
import org.springframework.boot.test.SpringApplicationConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import com.capgemini.devonfw.module.winauth.SpringBootApp;
-import com.capgemini.devonfw.module.winauth.common.api.AuthenticationSource;
-import com.capgemini.devonfw.module.winauth.common.impl.security.AuthenticationSourceADImpl;
+import com.capgemini.devonfw.module.winauthad.common.api.AuthenticationSource;
+import com.capgemini.devonfw.module.winauthad.common.impl.security.AuthenticationSourceADImpl;
import io.oasp.module.test.common.base.ComponentTest;
diff --git a/modules/winauth/src/test/java/com/capgemini/devonfw/module/winauth/base/GroupMapperADTest.java b/modules/winauth-ad/src/test/java/com/capgemini/devonfw/module/winauthad/base/GroupMapperADTest.java
similarity index 94%
rename from modules/winauth/src/test/java/com/capgemini/devonfw/module/winauth/base/GroupMapperADTest.java
rename to modules/winauth-ad/src/test/java/com/capgemini/devonfw/module/winauthad/base/GroupMapperADTest.java
index d34ba03..a71d9e4 100644
--- a/modules/winauth/src/test/java/com/capgemini/devonfw/module/winauth/base/GroupMapperADTest.java
+++ b/modules/winauth-ad/src/test/java/com/capgemini/devonfw/module/winauthad/base/GroupMapperADTest.java
@@ -1,4 +1,4 @@
-package com.capgemini.devonfw.module.winauth.base;
+package com.capgemini.devonfw.module.winauthad.base;
import java.util.ArrayList;
import java.util.HashMap;
@@ -10,8 +10,7 @@
import org.springframework.boot.test.SpringApplicationConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import com.capgemini.devonfw.module.winauth.SpringBootApp;
-import com.capgemini.devonfw.module.winauth.common.impl.security.GroupMapperAD;
+import com.capgemini.devonfw.module.winauthad.common.impl.security.GroupMapperAD;
import io.oasp.module.test.common.base.ComponentTest;
diff --git a/modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/SpringBootApp.java b/modules/winauth-ad/src/test/java/com/capgemini/devonfw/module/winauthad/base/SpringBootApp.java
similarity index 67%
rename from modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/SpringBootApp.java
rename to modules/winauth-ad/src/test/java/com/capgemini/devonfw/module/winauthad/base/SpringBootApp.java
index d13c3cb..06b49c8 100644
--- a/modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/SpringBootApp.java
+++ b/modules/winauth-ad/src/test/java/com/capgemini/devonfw/module/winauthad/base/SpringBootApp.java
@@ -1,11 +1,12 @@
-package com.capgemini.devonfw.module.winauth;
+package com.capgemini.devonfw.module.winauthad.base;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
@SuppressWarnings("javadoc")
@SpringBootApplication
-// @EntityScan(basePackages = { "devonfw.winauthSample" })
+@ComponentScan(basePackages = { "com.capgemini.devonfw.module.winauthad" })
public class SpringBootApp {
/**
* Entry point for spring-boot based app
diff --git a/modules/winauth/src/test/java/com/capgemini/devonfw/module/winauth/base/UserDetailsContextMapperADTest.java b/modules/winauth-ad/src/test/java/com/capgemini/devonfw/module/winauthad/base/UserDetailsContextMapperADTest.java
similarity index 87%
rename from modules/winauth/src/test/java/com/capgemini/devonfw/module/winauth/base/UserDetailsContextMapperADTest.java
rename to modules/winauth-ad/src/test/java/com/capgemini/devonfw/module/winauthad/base/UserDetailsContextMapperADTest.java
index 24fa1c8..cd69f67 100644
--- a/modules/winauth/src/test/java/com/capgemini/devonfw/module/winauth/base/UserDetailsContextMapperADTest.java
+++ b/modules/winauth-ad/src/test/java/com/capgemini/devonfw/module/winauthad/base/UserDetailsContextMapperADTest.java
@@ -1,4 +1,4 @@
-package com.capgemini.devonfw.module.winauth.base;
+package com.capgemini.devonfw.module.winauthad.base;
import javax.inject.Inject;
@@ -7,8 +7,7 @@
import org.springframework.boot.test.SpringApplicationConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import com.capgemini.devonfw.module.winauth.SpringBootApp;
-import com.capgemini.devonfw.module.winauth.common.impl.security.UserDetailsContextMapperAD;
+import com.capgemini.devonfw.module.winauthad.common.impl.security.UserDetailsContextMapperAD;
import io.oasp.module.test.common.base.ComponentTest;
diff --git a/modules/winauth/src/test/resources/application.properties b/modules/winauth-ad/src/test/resources/application.properties
similarity index 100%
rename from modules/winauth/src/test/resources/application.properties
rename to modules/winauth-ad/src/test/resources/application.properties
diff --git a/modules/winauth-sso/pom.xml b/modules/winauth-sso/pom.xml
new file mode 100644
index 0000000..a33c1cf
--- /dev/null
+++ b/modules/winauth-sso/pom.xml
@@ -0,0 +1,97 @@
+
+ 4.0.0
+
+ com.capgemini.devonfw.dev
+ devonfw-modules
+ dev-SNAPSHOT
+
+ com.capgemini.devonfw.modules
+ devonfw-winauth-sso
+ ${devonfw.version}
+ ${project.artifactId}
+ Single sign-on with Windows credentials authentication.
+
+
+
+
+ com.github.dblock.waffle
+ waffle-spring-security3
+
+
+
+
+ javax.servlet
+ javax.servlet-api
+ provided
+
+
+
+
+ org.hibernate
+ hibernate-validator-annotation-processor
+ 4.1.0.Final
+
+
+
+
+ org.springframework.boot
+ spring-boot
+
+
+ org.springframework.boot
+ spring-boot-autoconfigure
+
+
+ org.springframework.boot
+ spring-boot-configuration-processor
+ true
+
+
+ javax.inject
+ javax.inject
+
+
+ org.springframework
+ spring-context
+
+
+
+ org.springframework
+ spring-test
+ test
+
+
+ io.oasp.java.modules
+ oasp4j-test
+ test
+
+
+ io.oasp.java.modules
+ oasp4j-configuration
+ test
+
+
+
+ io.oasp.java.modules
+ oasp4j-security
+
+
+
+ io.oasp.java.modules
+ oasp4j-basic
+
+
+
+
+ io.oasp.java.modules
+ oasp4j-rest
+
+
+
+ io.oasp.java.modules
+ oasp4j-beanmapping
+
+
+
+
diff --git a/modules/winauth-sso/src/main/java/com/capgemini/devonfw/module/winauthsso/common/api/PrincipalProfile.java b/modules/winauth-sso/src/main/java/com/capgemini/devonfw/module/winauthsso/common/api/PrincipalProfile.java
new file mode 100644
index 0000000..42a195b
--- /dev/null
+++ b/modules/winauth-sso/src/main/java/com/capgemini/devonfw/module/winauthsso/common/api/PrincipalProfile.java
@@ -0,0 +1,44 @@
+package com.capgemini.devonfw.module.winauthsso.common.api;
+
+import java.security.Principal;
+import java.util.List;
+
+/**
+ * This is the interface for the profile of a user in Active Directory.
+ *
+ * @author jhcore
+ * @since dev
+ */
+public interface PrincipalProfile extends Principal {
+ /**
+ * @return the unique id of the user for authentication and identification.
+ */
+ String getId();
+
+ /**
+ * @return the unique login of the user for authentication and identification.
+ */
+ @Override
+ String getName();
+
+ /**
+ * @return the first name of the users real name.
+ */
+ String getFirstName();
+
+ /**
+ * @return the last name of the users real name.
+ */
+ String getLastName();
+
+ /**
+ * @return the list of groups of this {@link PrincipalProfile}.
+ */
+ List getGroups();
+
+ /**
+ * @param id
+ */
+ void setId(String id);
+
+}
\ No newline at end of file
diff --git a/modules/winauth-sso/src/main/java/com/capgemini/devonfw/module/winauthsso/common/api/UserData.java b/modules/winauth-sso/src/main/java/com/capgemini/devonfw/module/winauthsso/common/api/UserData.java
new file mode 100644
index 0000000..9a9cd7f
--- /dev/null
+++ b/modules/winauth-sso/src/main/java/com/capgemini/devonfw/module/winauthsso/common/api/UserData.java
@@ -0,0 +1,106 @@
+package com.capgemini.devonfw.module.winauthsso.common.api;
+
+import java.security.Principal;
+import java.util.Collection;
+
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.security.core.userdetails.User;
+
+/**
+ * Container class for the profile of a user.
+ *
+ * @author hohwille
+ */
+public class UserData extends User implements Principal {
+
+ private static final long serialVersionUID = 1L;
+
+ private PrincipalProfile userProfile;
+
+ /**
+ * @return userProfile
+ */
+ public PrincipalProfile getUserProfile() {
+
+ return this.userProfile;
+ }
+
+ /**
+ * @param userProfile new value of userProfile.
+ */
+ public void setUserProfile(PrincipalProfile userProfile) {
+
+ this.userProfile = userProfile;
+ }
+
+ /**
+ * The constructor.
+ *
+ * @param username sets the username
+ * @param password sets the password
+ * @param enabled check if user is enabled
+ * @param accountNonExpired check if user account is not expired
+ * @param credentialsNonExpired check if user credentials are not expired
+ * @param accountNonLocked check if user account is not locked
+ * @param authorities the authorities/permissions the user has
+ */
+ public UserData(String username, String password, boolean enabled, boolean accountNonExpired,
+ boolean credentialsNonExpired, boolean accountNonLocked, Collection extends GrantedAuthority> authorities) {
+
+ super(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities);
+ }
+
+ /**
+ * The constructor.
+ *
+ * @param username sets the username
+ * @param password sets the password
+ * @param authorities the authorities/permissions the user has
+ */
+ public UserData(String username, String password, Collection extends GrantedAuthority> authorities) {
+
+ super(username, password, authorities);
+ }
+
+ @Override
+ public String getName() {
+
+ return getUsername();
+ }
+
+ @Override
+ public String toString() {
+
+ return getName();
+ }
+
+ /**
+ * @return the {@link UserData} of the user currently logged in.
+ */
+ public static UserData get() {
+
+ return get(SecurityContextHolder.getContext().getAuthentication());
+ }
+
+ /**
+ * @param authentication is the {@link Authentication} where to retrieve the user from.
+ * @return the {@link UserData} of the logged in user from the given {@link Authentication}.
+ */
+ public static UserData get(Authentication authentication) {
+
+ if (authentication == null) {
+ throw new IllegalStateException("Authentication not available!");
+ }
+ Object principal = authentication.getPrincipal();
+ if (principal == null) {
+ throw new IllegalStateException("Principal not available!");
+ }
+ try {
+ return (UserData) principal;
+ } catch (ClassCastException e) {
+ throw new IllegalStateException("Principal (" + principal + ") is not an instance of UserData!", e);
+ }
+ }
+}
diff --git a/modules/winauth-sso/src/main/java/com/capgemini/devonfw/module/winauthsso/common/api/Usermanagement.java b/modules/winauth-sso/src/main/java/com/capgemini/devonfw/module/winauthsso/common/api/Usermanagement.java
new file mode 100644
index 0000000..0863284
--- /dev/null
+++ b/modules/winauth-sso/src/main/java/com/capgemini/devonfw/module/winauthsso/common/api/Usermanagement.java
@@ -0,0 +1,16 @@
+package com.capgemini.devonfw.module.winauthsso.common.api;
+
+/**
+ * Interface to get a user from its login.
+ *
+ * @author jhcore
+ */
+public interface Usermanagement {
+
+ /**
+ * @param login The login of the requested user.
+ * @return The {@link PrincipalProfile} with the given login
or {@code null} if no such object exists.
+ */
+ PrincipalProfile findPrincipalProfileByLogin(String login);
+
+}
diff --git a/modules/winauth-sso/src/main/java/com/capgemini/devonfw/module/winauthsso/common/api/WinauthSSO.java b/modules/winauth-sso/src/main/java/com/capgemini/devonfw/module/winauthsso/common/api/WinauthSSO.java
new file mode 100644
index 0000000..21542e9
--- /dev/null
+++ b/modules/winauth-sso/src/main/java/com/capgemini/devonfw/module/winauthsso/common/api/WinauthSSO.java
@@ -0,0 +1,19 @@
+package com.capgemini.devonfw.module.winauthsso.common.api;
+
+import waffle.spring.NegotiateSecurityFilter;
+import waffle.spring.NegotiateSecurityFilterEntryPoint;
+
+/**
+ * This is the interface for a simple facade to manage the Winauth Single sign-on
+ *
+ * @author pparrado
+ *
+ */
+public interface WinauthSSO {
+
+ public NegotiateSecurityFilter getSSOFilter();
+
+ public NegotiateSecurityFilterEntryPoint getSSOFilterEntryPoint();
+
+ public void setCustomFilter(NegotiateSecurityFilter waffleNegotiateSecurityFilter);
+}
diff --git a/modules/winauth-sso/src/main/java/com/capgemini/devonfw/module/winauthsso/common/api/security/UserData.java b/modules/winauth-sso/src/main/java/com/capgemini/devonfw/module/winauthsso/common/api/security/UserData.java
new file mode 100644
index 0000000..e9eb2e3
--- /dev/null
+++ b/modules/winauth-sso/src/main/java/com/capgemini/devonfw/module/winauthsso/common/api/security/UserData.java
@@ -0,0 +1,109 @@
+package com.capgemini.devonfw.module.winauthsso.common.api.security;
+
+import java.security.Principal;
+import java.util.Collection;
+
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.security.core.userdetails.User;
+
+import com.capgemini.devonfw.module.winauthsso.common.api.PrincipalProfile;
+
+/**
+ * Container class for the profile of a user.
+ *
+ * @author hohwille, jhcore
+ */
+public class UserData extends User implements Principal {
+
+ private static final long serialVersionUID = 1L;
+
+ private PrincipalProfile userProfile;
+
+ /**
+ * The constructor.
+ *
+ * @param username sets the username
+ * @param password sets the password
+ * @param enabled check if user is enabled
+ * @param accountNonExpired check if user account is not expired
+ * @param credentialsNonExpired check if user credentials are not expired
+ * @param accountNonLocked check if user account is not locked
+ * @param authorities the authorities/permissions the user has
+ */
+ public UserData(String username, String password, boolean enabled, boolean accountNonExpired,
+ boolean credentialsNonExpired, boolean accountNonLocked, Collection extends GrantedAuthority> authorities) {
+
+ super(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities);
+ }
+
+ /**
+ * The constructor.
+ *
+ * @param username sets the username
+ * @param password sets the password
+ * @param authorities the authorities/permissions the user has
+ */
+ public UserData(String username, String password, Collection extends GrantedAuthority> authorities) {
+
+ super(username, password, authorities);
+ }
+
+ @Override
+ public String getName() {
+
+ return getUsername();
+ }
+
+ @Override
+ public String toString() {
+
+ return getName();
+ }
+
+ /**
+ * @return userProfile
+ */
+ public PrincipalProfile getUserProfile() {
+
+ return this.userProfile;
+ }
+
+ /**
+ * @param userProfile the userProfile com.capgemini.devonfw.module.winauth.common.api.to set
+ */
+ public void setUserProfile(PrincipalProfile userProfile) {
+
+ this.userProfile = userProfile;
+ }
+
+ /**
+ * @return the {@link UserData} of the user currently logged in.
+ */
+ public static UserData get() {
+
+ return get(SecurityContextHolder.getContext().getAuthentication());
+ }
+
+ /**
+ * @param authentication is the {@link Authentication} where com.capgemini.devonfw.module.winauth.common.api.to
+ * retrieve the user from.
+ * @return the {@link UserData} of the logged in user from the given {@link Authentication}.
+ */
+ public static UserData get(Authentication authentication) {
+
+ if (authentication == null) {
+ throw new IllegalStateException("Authentication not available!");
+ }
+ Object principal = authentication.getPrincipal();
+ if (principal == null) {
+ throw new IllegalStateException("Principal not available!");
+ }
+ try {
+ return (UserData) principal;
+ } catch (ClassCastException e) {
+ throw new IllegalStateException("Principal (" + principal + ") is not an instance of UserDataAD!", e);
+ }
+ }
+}
diff --git a/modules/winauth-sso/src/main/java/com/capgemini/devonfw/module/winauthsso/common/impl/security/NegotiateCustomSecurityFilter.java b/modules/winauth-sso/src/main/java/com/capgemini/devonfw/module/winauthsso/common/impl/security/NegotiateCustomSecurityFilter.java
new file mode 100644
index 0000000..78b8e97
--- /dev/null
+++ b/modules/winauth-sso/src/main/java/com/capgemini/devonfw/module/winauthsso/common/impl/security/NegotiateCustomSecurityFilter.java
@@ -0,0 +1,13 @@
+package com.capgemini.devonfw.module.winauthsso.common.impl.security;
+
+import waffle.spring.NegotiateSecurityFilter;
+
+/**
+ * Wrapper for {@link NegotiateSecurityFilter}
+ *
+ * @author pparrado
+ *
+ */
+public class NegotiateCustomSecurityFilter extends NegotiateSecurityFilter {
+
+}
diff --git a/modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/impl/security/NegotiateSecurityFilterSSO.java b/modules/winauth-sso/src/main/java/com/capgemini/devonfw/module/winauthsso/common/impl/security/NegotiateSecurityFilterSSO.java
similarity index 58%
rename from modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/impl/security/NegotiateSecurityFilterSSO.java
rename to modules/winauth-sso/src/main/java/com/capgemini/devonfw/module/winauthsso/common/impl/security/NegotiateSecurityFilterSSO.java
index 7e61ed2..87589d8 100644
--- a/modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/impl/security/NegotiateSecurityFilterSSO.java
+++ b/modules/winauth-sso/src/main/java/com/capgemini/devonfw/module/winauthsso/common/impl/security/NegotiateSecurityFilterSSO.java
@@ -1,13 +1,10 @@
-package com.capgemini.devonfw.module.winauth.common.impl.security;
+package com.capgemini.devonfw.module.winauthsso.common.impl.security;
-import javax.inject.Inject;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.security.core.Authentication;
-import com.capgemini.devonfw.module.winauth.common.api.AuthenticationSource;
-
import waffle.servlet.spi.SecurityFilterProviderCollection;
import waffle.spring.NegotiateSecurityFilter;
@@ -36,44 +33,6 @@ public void setProvider(SecurityFilterProviderCollection securityFilterProviderC
super.setProvider(securityFilterProviderCollection);
}
- private AuthenticationSource authenticationSource;
-
- private GroupMapperAD groupMapperAD;
-
- /**
- * @return authenticationSource
- */
- public AuthenticationSource getAuthenticationSource() {
-
- return this.authenticationSource;
- }
-
- /**
- * @param authenticationSource new value of authenticationSource.
- */
- @Inject
- public void setAuthenticationSource(AuthenticationSource authenticationSource) {
-
- this.authenticationSource = authenticationSource;
- }
-
- /**
- * @return groupMapperAD
- */
- public GroupMapperAD getGroupMapperAD() {
-
- return this.groupMapperAD;
- }
-
- /**
- * @param groupMapperAD new value of groupMapperAD.
- */
- @Inject
- public void setGroupMapperAD(GroupMapperAD groupMapperAD) {
-
- this.groupMapperAD = groupMapperAD;
- }
-
@Override
protected boolean setAuthentication(final HttpServletRequest request, final HttpServletResponse response,
final Authentication authentication) {
diff --git a/modules/winauth-sso/src/main/java/com/capgemini/devonfw/module/winauthsso/common/impl/security/PrincipalProfileImpl.java b/modules/winauth-sso/src/main/java/com/capgemini/devonfw/module/winauthsso/common/impl/security/PrincipalProfileImpl.java
new file mode 100644
index 0000000..f2dfbd3
--- /dev/null
+++ b/modules/winauth-sso/src/main/java/com/capgemini/devonfw/module/winauthsso/common/impl/security/PrincipalProfileImpl.java
@@ -0,0 +1,129 @@
+package com.capgemini.devonfw.module.winauthsso.common.impl.security;
+
+import java.util.List;
+import java.util.Locale;
+
+import com.capgemini.devonfw.module.winauthsso.common.api.PrincipalProfile;
+
+/**
+ * Implementation of {@link PrincipalProfile}.
+ *
+ * @author jhcore
+ */
+public class PrincipalProfileImpl implements PrincipalProfile {
+
+ private String name;
+
+ private String firstName;
+
+ private String lastName;
+
+ private List groups;
+
+ private Locale language;
+
+ private String id;
+
+ /**
+ * The constructor.
+ */
+ public PrincipalProfileImpl() {
+ }
+
+ /**
+ * @return name
+ */
+ @Override
+ public String getName() {
+
+ return this.name;
+ }
+
+ /**
+ * @param name new value of user name.
+ */
+ public void setName(String name) {
+
+ this.name = name;
+ }
+
+ /**
+ * @return firstName
+ */
+ @Override
+ public String getFirstName() {
+
+ return this.firstName;
+ }
+
+ /**
+ * @param firstName new value of user first name.
+ */
+ public void setFirstName(String firstName) {
+
+ this.firstName = firstName;
+ }
+
+ /**
+ * @return lastName
+ */
+ @Override
+ public String getLastName() {
+
+ return this.lastName;
+ }
+
+ /**
+ * @param lastName new value of user last name.
+ */
+ public void setLastName(String lastName) {
+
+ this.lastName = lastName;
+ }
+
+ /**
+ * @return groups
+ */
+ @Override
+ public List getGroups() {
+
+ return this.groups;
+ }
+
+ /**
+ * @param groups new value of user groups
+ */
+ public void setGroups(List groups) {
+
+ this.groups = groups;
+ }
+
+ @Override
+ public String getId() {
+
+ return this.id;
+ }
+
+ /**
+ * @return language
+ */
+ public Locale getLanguage() {
+
+ return this.language;
+ }
+
+ /**
+ * @param language the language to set
+ */
+ public void setLanguage(Locale language) {
+
+ this.language = language;
+ }
+
+ @Override
+ public void setId(String id) {
+
+ this.id = id;
+ }
+
+}
diff --git a/modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/impl/security/WinauthSSO.java b/modules/winauth-sso/src/main/java/com/capgemini/devonfw/module/winauthsso/common/impl/security/WinauthSSOImpl.java
similarity index 84%
rename from modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/impl/security/WinauthSSO.java
rename to modules/winauth-sso/src/main/java/com/capgemini/devonfw/module/winauthsso/common/impl/security/WinauthSSOImpl.java
index daeda13..ac916c9 100644
--- a/modules/winauth/src/main/java/com/capgemini/devonfw/module/winauth/common/impl/security/WinauthSSO.java
+++ b/modules/winauth-sso/src/main/java/com/capgemini/devonfw/module/winauthsso/common/impl/security/WinauthSSOImpl.java
@@ -1,10 +1,14 @@
-package com.capgemini.devonfw.module.winauth.common.impl.security;
+package com.capgemini.devonfw.module.winauthsso.common.impl.security;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Named;
+import org.springframework.stereotype.Component;
+
+import com.capgemini.devonfw.module.winauthsso.common.api.WinauthSSO;
+
import waffle.servlet.spi.NegotiateSecurityFilterProvider;
import waffle.servlet.spi.SecurityFilterProvider;
import waffle.servlet.spi.SecurityFilterProviderCollection;
@@ -14,12 +18,12 @@
import waffle.windows.auth.impl.WindowsAuthProviderImpl;
/**
- * This class initialize all Waffle Single Sign On configuration.
+ * @author pparrado
*
- * @author jhcore
*/
+@Component
@Named
-public class WinauthSSO {
+public class WinauthSSOImpl implements WinauthSSO {
private WindowsAuthenticationProvider waffleWindowsAuthProvider;
@@ -34,7 +38,7 @@ public class WinauthSSO {
/**
* The constructor.
*/
- public WinauthSSO() {
+ public WinauthSSOImpl() {
this.waffleNegotiateSecurityFilter = new NegotiateSecurityFilter();
init();
}
@@ -44,7 +48,14 @@ public WinauthSSO() {
*
* @param waffleNegotiateSecurityFilter contains the authentication customized
*/
- public WinauthSSO(NegotiateSecurityFilter waffleNegotiateSecurityFilter) {
+ public WinauthSSOImpl(NegotiateSecurityFilter waffleNegotiateSecurityFilter) {
+ this.waffleNegotiateSecurityFilter = waffleNegotiateSecurityFilter;
+ init();
+ }
+
+ @Override
+ public void setCustomFilter(NegotiateSecurityFilter waffleNegotiateSecurityFilter) {
+
this.waffleNegotiateSecurityFilter = waffleNegotiateSecurityFilter;
init();
}
@@ -203,11 +214,34 @@ public void setNegotiateSecurityFilterEntryPoint(
/**
* @return waffleNegotiateSecurityFilter
*/
+
public NegotiateSecurityFilter getWaffleNegotiateSecurityFilter() {
return this.waffleNegotiateSecurityFilter;
}
+ /**
+ * Gets the NegotiateSecurityFilter. This method is a wrapper for getWaffleNegotiateSecurityFilter()
+ *
+ * @return {@link NegotiateSecurityFilter}
+ */
+ @Override
+ public NegotiateSecurityFilter getSSOFilter() {
+
+ return getWaffleNegotiateSecurityFilter();
+ }
+
+ /**
+ * Gets the NegotiateSecurityFilterEntryPoint. This method is a wrapper for getNegotiateSecurityFilterEntryPoint()
+ *
+ * @return {@link NegotiateSecurityFilterEntryPoint}
+ */
+ @Override
+ public NegotiateSecurityFilterEntryPoint getSSOFilterEntryPoint() {
+
+ return getNegotiateSecurityFilterEntryPoint();
+ }
+
/**
* @param waffleNegotiateSecurityFilter new value of waffleNegotiateSecurityFilter.
*/
diff --git a/modules/winauth-sso/src/main/java/com/capgemini/devonfw/module/winauthsso/config/ModuleConfig.java b/modules/winauth-sso/src/main/java/com/capgemini/devonfw/module/winauthsso/config/ModuleConfig.java
new file mode 100644
index 0000000..a2bf17a
--- /dev/null
+++ b/modules/winauth-sso/src/main/java/com/capgemini/devonfw/module/winauthsso/config/ModuleConfig.java
@@ -0,0 +1,15 @@
+package com.capgemini.devonfw.module.winauthsso.config;
+
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * Spring Boot autoconfiguration for WinauthSSO module
+ *
+ * @author pparrado
+ *
+ */
+@Configuration
+@ComponentScan(basePackages = { "com.capgemini.devonfw.module.winauthsso" })
+public class ModuleConfig {
+}
diff --git a/modules/winauth-sso/src/main/resources/META-INF/spring.factories b/modules/winauth-sso/src/main/resources/META-INF/spring.factories
new file mode 100644
index 0000000..a0bf8f7
--- /dev/null
+++ b/modules/winauth-sso/src/main/resources/META-INF/spring.factories
@@ -0,0 +1 @@
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.capgemini.devonfw.module.winauthsso.config.ModuleConfig
\ No newline at end of file
diff --git a/modules/winauth-sso/src/main/resources/application.properties b/modules/winauth-sso/src/main/resources/application.properties
new file mode 100644
index 0000000..414b903
--- /dev/null
+++ b/modules/winauth-sso/src/main/resources/application.properties
@@ -0,0 +1,9 @@
+# ---------------------------------------------------------------------------
+# Base values
+# ---------------------------------------------------------------------------
+
+
+# Activate spring profiles
+#spring.profiles.active = integrationTest
+
+#Server configuration
\ No newline at end of file
diff --git a/modules/winauth-sso/src/test/java/com/capgemini/devonfw/module/winauthsso/base/SpringBootApp.java b/modules/winauth-sso/src/test/java/com/capgemini/devonfw/module/winauthsso/base/SpringBootApp.java
new file mode 100644
index 0000000..c13e6d2
--- /dev/null
+++ b/modules/winauth-sso/src/test/java/com/capgemini/devonfw/module/winauthsso/base/SpringBootApp.java
@@ -0,0 +1,20 @@
+package com.capgemini.devonfw.module.winauthsso.base;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+
+@SuppressWarnings("javadoc")
+@SpringBootApplication
+@ComponentScan(basePackages = { "com.capgemini.devonfw.module.winauthsso" })
+public class SpringBootApp {
+ /**
+ * Entry point for spring-boot based app
+ *
+ * @param args - arguments
+ */
+ public static void main(String[] args) {
+
+ SpringApplication.run(SpringBootApp.class, args);
+ }
+}
diff --git a/modules/winauth/src/test/java/com/capgemini/devonfw/module/winauth/base/WinauthSSOTest.java b/modules/winauth-sso/src/test/java/com/capgemini/devonfw/module/winauthsso/base/WinauthSSOTest.java
similarity index 57%
rename from modules/winauth/src/test/java/com/capgemini/devonfw/module/winauth/base/WinauthSSOTest.java
rename to modules/winauth-sso/src/test/java/com/capgemini/devonfw/module/winauthsso/base/WinauthSSOTest.java
index 862d06e..fc8ca85 100644
--- a/modules/winauth/src/test/java/com/capgemini/devonfw/module/winauth/base/WinauthSSOTest.java
+++ b/modules/winauth-sso/src/test/java/com/capgemini/devonfw/module/winauthsso/base/WinauthSSOTest.java
@@ -1,13 +1,16 @@
-package com.capgemini.devonfw.module.winauth.base;
+package com.capgemini.devonfw.module.winauthsso.base;
+import javax.inject.Inject;
+
+import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.SpringApplicationConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import com.capgemini.devonfw.module.winauth.SpringBootApp;
-import com.capgemini.devonfw.module.winauth.common.impl.security.NegotiateSecurityFilterSSO;
-import com.capgemini.devonfw.module.winauth.common.impl.security.WinauthSSO;
+import com.capgemini.devonfw.module.winauthsso.common.api.WinauthSSO;
+import com.capgemini.devonfw.module.winauthsso.common.impl.security.NegotiateSecurityFilterSSO;
+import com.capgemini.devonfw.module.winauthsso.common.impl.security.WinauthSSOImpl;
import io.oasp.module.test.common.base.ComponentTest;
@@ -18,12 +21,25 @@
*/
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = SpringBootApp.class)
-
public class WinauthSSOTest extends ComponentTest {
- private WinauthSSO ssoDefault = new WinauthSSO();
+ private WinauthSSOImpl ssoDefault = new WinauthSSOImpl();
+
+ private WinauthSSOImpl ssoAuthenticationCustomized = new WinauthSSOImpl();
+
+ @Inject
+ private WinauthSSO sso;
- private WinauthSSO ssoAuthenticationCustomized = new WinauthSSO(new NegotiateSecurityFilterSSO());
+ @Inject
+ private WinauthSSO ssoCustom;
+
+ @SuppressWarnings("javadoc")
+ @Before
+ public void init() {
+
+ this.ssoCustom.setCustomFilter(new NegotiateSecurityFilterSSO());
+ this.ssoAuthenticationCustomized.setCustomFilter(new NegotiateSecurityFilterSSO());
+ }
/**
*
@@ -31,6 +47,8 @@ public class WinauthSSOTest extends ComponentTest {
@Test
public void testWinauthSSO() {
+ assertThat(this.sso).isNotNull();
+ assertThat(this.ssoCustom).isNotNull();
assertThat(this.ssoDefault).isNotNull();
assertThat(this.ssoAuthenticationCustomized).isNotNull();
}
@@ -41,8 +59,8 @@ public void testWinauthSSO() {
@Test
public void testWinauthSSODefault() {
- assertThat(this.ssoDefault.getNegotiateSecurityFilter()).isNotNull();
- assertThat(this.ssoDefault.getNegotiateSecurityFilterEntryPoint()).isNotNull();
+ assertThat(this.sso.getSSOFilter()).isNotNull();
+ assertThat(this.sso.getSSOFilterEntryPoint()).isNotNull();
assertThat(this.ssoDefault.getNegotiateSecurityFilterProvider()).isNotNull();
assertThat(this.ssoDefault.getWaffleNegotiateSecurityFilter()).isNotNull();
assertThat(this.ssoDefault.getWaffleSecurityFilterProviderCollection()).isNotNull();
@@ -55,8 +73,8 @@ public void testWinauthSSODefault() {
@Test
public void testWinauthSSOCustomized() {
- assertThat(this.ssoAuthenticationCustomized.getNegotiateSecurityFilter()).isNotNull();
- assertThat(this.ssoAuthenticationCustomized.getNegotiateSecurityFilterEntryPoint()).isNotNull();
+ assertThat(this.ssoCustom.getSSOFilter()).isNotNull();
+ assertThat(this.ssoCustom.getSSOFilterEntryPoint()).isNotNull();
assertThat(this.ssoAuthenticationCustomized.getNegotiateSecurityFilterProvider()).isNotNull();
assertThat(this.ssoAuthenticationCustomized.getWaffleNegotiateSecurityFilter()).isNotNull();
assertThat(this.ssoAuthenticationCustomized.getWaffleSecurityFilterProviderCollection()).isNotNull();
diff --git a/modules/winauth-sso/src/test/resources/application.properties b/modules/winauth-sso/src/test/resources/application.properties
new file mode 100644
index 0000000..f6a9ab2
--- /dev/null
+++ b/modules/winauth-sso/src/test/resources/application.properties
@@ -0,0 +1,4 @@
+# ---------------------------------------------------------------------------
+# Base values
+# ---------------------------------------------------------------------------
+
diff --git a/modules/winauth/.gitignore b/modules/winauth/.gitignore
deleted file mode 100644
index d2295d8..0000000
--- a/modules/winauth/.gitignore
+++ /dev/null
@@ -1,19 +0,0 @@
-*.class
-*.classpath
-*.project
-*.iml
-.*
-target/
-jsclient/
-bin/
-eclipse-target/
-**/src/generated/
-**/tmp/
-
-# Package Files #
-*.jar
-*.war
-*.ear
-
-# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
-hs_err_pid*