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 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 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 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 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*