@Override protected void configure(HttpSecurity http) throws Exception { SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler(); successHandler.setTargetUrlParameter("continue"); // @formatter:off http .requestMatchers() .antMatchers(LoginFormController.PATH_MAPPING, LOGOUT_URL, AuthorizationEndpoint.PATH_MAPPING, EndSessionEndpoint.PATH_MAPPING) .and() .authorizeRequests() .anyRequest().permitAll() .and() .formLogin() .loginPage(LoginFormController.PATH_MAPPING) .successHandler(successHandler) .and() .logout() .logoutSuccessHandler(new ForwardLogoutSuccessHandler(EndSessionEndpoint.PATH_MAPPING)) .and() .sessionManagement() .sessionFixation().migrateSession(); // @formatter:on }
/** * * @return * @throws Exception */ @Bean public DomainUsernamePasswordAuthenticationFilter domainUsernamePasswordAuthenticationFilter() throws Exception { DomainUsernamePasswordAuthenticationFilter dupaf = new DomainUsernamePasswordAuthenticationFilter( super.authenticationManagerBean()); dupaf.setFilterProcessesUrl("/login"); dupaf.setUsernameParameter("username"); dupaf.setPasswordParameter("password"); dupaf.setAuthenticationSuccessHandler( new SavedRequestAwareAuthenticationSuccessHandler(){{ setDefaultTargetUrl("/default"); }} ); dupaf.setAuthenticationFailureHandler( new SimpleUrlAuthenticationFailureHandler(){{ setDefaultFailureUrl("/login/form?error"); }} ); dupaf.afterPropertiesSet(); return dupaf; }
private Filter ssoFilter(final String path) { final OAuth2ClientAuthenticationProcessingFilter oAuth2ClientAuthenticationFilter = new OAuth2ClientAuthenticationProcessingFilter( path); final SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler(); oAuth2ClientAuthenticationFilter.setAuthenticationSuccessHandler(successHandler); successHandler.setAlwaysUseDefaultTargetUrl(true); successHandler.setDefaultTargetUrl("/UI"); final OAuth2RestTemplate oAuth2RestTemplate = new OAuth2RestTemplate(uaaClientResources.getClient(), oauth2ClientContext); oAuth2ClientAuthenticationFilter.setRestTemplate(oAuth2RestTemplate); final UserPrincipalInfoTokenServices tokenServices = new UserPrincipalInfoTokenServices( uaaClientResources.getResource().getUserInfoUri(), uaaClientResources.getClient().getClientId(), oauth2ClientContext); tokenServices.setRestTemplate(oAuth2RestTemplate); tokenServices.setAuthoritiesExtractor(tokenServices); oAuth2ClientAuthenticationFilter.setTokenServices(tokenServices); return oAuth2ClientAuthenticationFilter; }
@Override protected void configure(HttpSecurity http) throws Exception { // @formatter:off SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler(); successHandler.setTargetUrlParameter("redirectTo"); http.authorizeRequests() .antMatchers(adminContextPath + "/assets/**").permitAll() .antMatchers(adminContextPath + "/login").permitAll() .anyRequest().authenticated() .and() .formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and() .logout().logoutUrl(adminContextPath + "/logout").and() .httpBasic().and() .csrf().disable(); // @formatter:on }
private Filter ssoFilter() { OAuth2ClientAuthenticationProcessingFilter facebookFilter = new OAuth2ClientAuthenticationProcessingFilter("/login"); OAuth2RestTemplate facebookTemplate = new OAuth2RestTemplate(facebook(), oauth2ClientContext); facebookFilter.setRestTemplate(facebookTemplate); UserInfoTokenServices tokenServices = new UserInfoTokenServices(facebookResource().getUserInfoUri(), facebook().getClientId()); tokenServices.setRestTemplate(facebookTemplate); facebookFilter.setTokenServices(tokenServices); SavedRequestAwareAuthenticationSuccessHandler authenticationSuccessHandler = new SavedRequestAwareAuthenticationSuccessHandler(); authenticationSuccessHandler.setUseReferer(true); authenticationSuccessHandler.setTargetUrlParameter("continue"); facebookFilter.setAuthenticationSuccessHandler(authenticationSuccessHandler); return facebookFilter; }
public void init() { System.err.println(" ---------------AuthenticationFilter init--------------- "); this.setUsernameParameter(USERNAME); this.setPasswordParameter(PASSWORD); // 验证成功,跳转的页面 SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler(); successHandler.setDefaultTargetUrl(successUrl); this.setAuthenticationSuccessHandler(successHandler); // 验证失败,跳转的页面 SimpleUrlAuthenticationFailureHandler failureHandler = new SimpleUrlAuthenticationFailureHandler(); failureHandler.setDefaultFailureUrl(errorUrl); this.setAuthenticationFailureHandler(failureHandler); }
/** * Success login hander, adding cookie auth * * @return */ @Bean public AuthenticationSuccessHandler successHandler() { return new SavedRequestAwareAuthenticationSuccessHandler() { @Override public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException { LOG.info("LOGIN >>> " + authentication.getPrincipal()); UserAuth userAuth = (UserAuth) authentication.getPrincipal(); apiAuth.put(userAuth, response); PrintWriter writer = response.getWriter(); mapper.writeValue(writer, userAuth); writer.flush(); } }; }
@Override protected void configure(HttpSecurity http) throws Exception { LoginDecisionFilter loginDecisionFilter = new LoginDecisionFilter(); loginDecisionFilter.setAuthenticationManager(authenticationManagerBean()); SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler(); successHandler.setAlwaysUseDefaultTargetUrl(false); loginDecisionFilter.setAuthenticationSuccessHandler(successHandler); loginDecisionFilter.setAuthenticationFailureHandler( new OsiamCachingAuthenticationFailureHandler("/login/error") ); // @formatter:off http.requestMatchers() .antMatchers("/login/**", "/error", "/oauth/**") .and() .authorizeRequests() .antMatchers("/login", "/login/error", "/error").permitAll() .anyRequest().authenticated() .and() .csrf() // TODO: This is a bad idea! We need CSRF at least for the `/oauth/authorize` endpoint // see also: https://github.com/spring-projects/spring-security-oauth/blob/2.0.8.RELEASE/samples/oauth2/sparklr/src/main/java/org/springframework/security/oauth/examples/sparklr/config/SecurityConfiguration.java#L48 .disable() .exceptionHandling() .accessDeniedPage("/login/error") .and() .sessionManagement() .sessionCreationPolicy(SessionCreationPolicy.ALWAYS) .and() .formLogin() .loginProcessingUrl("/login/check") .failureUrl("/login/error") .loginPage("/login") .and() .addFilterBefore(loginDecisionFilter, UsernamePasswordAuthenticationFilter.class); // @formatter:on }
@Bean public SavedRequestAwareAuthenticationSuccessHandler savedRequestAwareAuthenticationSuccessHandler() { SavedRequestAwareAuthenticationSuccessHandler auth = new SavedRequestAwareAuthenticationSuccessHandler(); auth.setTargetUrlParameter("targetUrl"); return auth; }
@Override public void afterPropertiesSet() { super.afterPropertiesSet(); ((SavedRequestAwareAuthenticationSuccessHandler) getSuccessHandler()).setAlwaysUseDefaultTargetUrl(false); setAuthenticationFailureHandler(new AuthenticationFailureHandler() { public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception) throws IOException, ServletException { requestCache.saveRequest(request, response); authenticationEntryPoint.commence(request, response, exception); } }); }
@PostConstruct public void init(){ if (defaultAuthenticationSuccessUrl != null && !defaultAuthenticationSuccessUrl.isEmpty()){ SavedRequestAwareAuthenticationSuccessHandler savedRequestAwareAuthenticationSuccessHandler = new SavedRequestAwareAuthenticationSuccessHandler(); savedRequestAwareAuthenticationSuccessHandler.setDefaultTargetUrl(defaultAuthenticationSuccessUrl); setAuthenticationSuccessHandler(savedRequestAwareAuthenticationSuccessHandler); } }
protected Filter authenticationFilter() { AbstractAuthenticationProcessingFilter filter = new SecurityContextAuthenticationFilter(SIGNIN_SUCCESS_PATH); SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler(); successHandler.setDefaultTargetUrl("/admin"); filter.setAuthenticationSuccessHandler(successHandler); return filter; }
public AuthenticationSuccessHandler authenticationSuccessHandler() { SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler(); successHandler.setRedirectStrategy(new XForwardedAwareRedirectStrategy()); return successHandler; }
@Override public void configure(ServiceProviderBuilder builder) throws Exception { if (successHandler == null) { SavedRequestAwareAuthenticationSuccessHandler successRedirectHandler = createDefaultSuccessHandler(); successRedirectHandler.setDefaultTargetUrl(Optional.ofNullable(defaultSuccessURL).orElseGet(config::getDefaultSuccessUrl)); successHandler = postProcess(successRedirectHandler); } defaultFailureURL = Optional.ofNullable(defaultFailureURL).orElseGet(config::getDefaultFailureUrl); if (failureHandler == null) { SimpleUrlAuthenticationFailureHandler authenticationFailureHandler = createDefaultFailureHandler(); authenticationFailureHandler.setDefaultFailureUrl(defaultFailureURL); failureHandler = postProcess(authenticationFailureHandler); } endpoints.setDefaultFailureURL(defaultFailureURL); SAMLProcessingFilter ssoFilter = createDefaultSamlProcessingFilter(); ssoFilter.setAuthenticationManager(authenticationManager); ssoFilter.setAuthenticationSuccessHandler(successHandler); ssoFilter.setAuthenticationFailureHandler(failureHandler); ssoProcessingURL = Optional.ofNullable(ssoProcessingURL).orElseGet(config::getSsoProcessingUrl); endpoints.setSsoProcessingURL(ssoProcessingURL); ssoFilter.setFilterProcessesUrl(ssoProcessingURL); SAMLWebSSOHoKProcessingFilter ssoHoKFilter = null; if (Optional.ofNullable(enableSsoHoK).orElseGet(config::isEnableSsoHok)) { ssoHoKFilter = createDefaultSamlHoKProcessingFilter(); ssoHoKFilter.setAuthenticationSuccessHandler(successHandler); ssoHoKFilter.setAuthenticationManager(authenticationManager); ssoHoKFilter.setAuthenticationFailureHandler(failureHandler); ssoHoKProcessingURL = Optional.ofNullable(ssoHoKProcessingURL).orElseGet(config::getSsoHokProcessingUrl); endpoints.setSsoHoKProcessingURL(ssoHoKProcessingURL); ssoHoKFilter.setFilterProcessesUrl(ssoHoKProcessingURL); } SAMLDiscovery discoveryFilter = createDefaultSamlDiscoveryFilter(); discoveryProcessingURL = Optional.ofNullable(discoveryProcessingURL).orElseGet(config::getDiscoveryProcessingUrl); endpoints.setDiscoveryProcessingURL(discoveryProcessingURL); discoveryFilter.setFilterProcessesUrl(discoveryProcessingURL); idpSelectionPageURL = Optional.ofNullable(idpSelectionPageURL).orElseGet(config::getIdpSelectionPageUrl); endpoints.setIdpSelectionPageURL(idpSelectionPageURL); discoveryFilter.setIdpSelectionPath(idpSelectionPageURL); SAMLEntryPoint entryPoint = Optional.ofNullable(samlEntryPointBean).orElseGet(this::createDefaultSamlEntryPoint); entryPoint.setDefaultProfileOptions(Optional.ofNullable(profileOptions).orElseGet(this::getProfileOptions)); ssoLoginURL = Optional.ofNullable(ssoLoginURL).orElseGet(config::getSsoLoginUrl); endpoints.setSsoLoginURL(ssoLoginURL); entryPoint.setFilterProcessesUrl(ssoLoginURL); builder.setSharedObject(SAMLProcessingFilter.class, ssoFilter); builder.setSharedObject(SAMLWebSSOHoKProcessingFilter.class, ssoHoKFilter); builder.setSharedObject(SAMLDiscovery.class, discoveryFilter); builder.setSharedObject(SAMLEntryPoint.class, entryPoint); }
@VisibleForTesting protected SavedRequestAwareAuthenticationSuccessHandler createDefaultSuccessHandler() { return new SavedRequestAwareAuthenticationSuccessHandler(); }
@Test public void configure_defaults() throws Exception { SSOConfigurer configurer = spy(new SSOConfigurer()); SAMLProcessingFilter ssoFilter = mock(SAMLProcessingFilter.class); when(configurer.createDefaultSamlProcessingFilter()).thenReturn(ssoFilter); SAMLWebSSOHoKProcessingFilter ssoHoKFilter = mock(SAMLWebSSOHoKProcessingFilter.class); when(configurer.createDefaultSamlHoKProcessingFilter()).thenReturn(ssoHoKFilter); SAMLDiscovery discoveryFilter = mock(SAMLDiscovery.class); when(configurer.createDefaultSamlDiscoveryFilter()).thenReturn(discoveryFilter); SAMLEntryPoint entryPoint = mock(SAMLEntryPoint.class); when(configurer.createDefaultSamlEntryPoint()).thenReturn(entryPoint); SavedRequestAwareAuthenticationSuccessHandler successHandler = mock(SavedRequestAwareAuthenticationSuccessHandler.class); when(configurer.createDefaultSuccessHandler()).thenReturn(successHandler); SimpleUrlAuthenticationFailureHandler failureHandler = mock(SimpleUrlAuthenticationFailureHandler.class); when(configurer.createDefaultFailureHandler()).thenReturn(failureHandler); configurer.init(builder); configurer.configure(builder); verify(properties).getDefaultFailureUrl(); verify(properties).getDefaultSuccessUrl(); verify(properties).getDiscoveryProcessingUrl(); verify(properties).getIdpSelectionPageUrl(); verify(properties).getSsoHokProcessingUrl(); verify(properties).getSsoLoginUrl(); verify(properties).getSsoProcessingUrl(); verify(properties).getProfileOptions(); verify(successHandler).setDefaultTargetUrl(eq(properties.getDefaultSuccessUrl())); verify(failureHandler).setDefaultFailureUrl(eq(properties.getDefaultFailureUrl())); verify(ssoFilter).setAuthenticationManager(eq(authenticationManager)); verify(ssoFilter).setAuthenticationSuccessHandler(eq(successHandler)); verify(ssoFilter).setAuthenticationFailureHandler(eq(failureHandler)); verify(ssoFilter).setFilterProcessesUrl(eq(properties.getSsoProcessingUrl())); verify(ssoHoKFilter).setAuthenticationManager(eq(authenticationManager)); verify(ssoHoKFilter).setAuthenticationSuccessHandler(eq(successHandler)); verify(ssoHoKFilter).setAuthenticationFailureHandler(eq(failureHandler)); verify(ssoHoKFilter).setFilterProcessesUrl(eq(properties.getSsoHokProcessingUrl())); verify(serviceProviderEndpoints).setSsoProcessingURL(properties.getSsoProcessingUrl()); verify(serviceProviderEndpoints).setSsoHoKProcessingURL(properties.getSsoHokProcessingUrl()); verify(serviceProviderEndpoints).setDefaultFailureURL(properties.getDefaultFailureUrl()); verify(serviceProviderEndpoints).setDiscoveryProcessingURL(properties.getDiscoveryProcessingUrl()); verify(serviceProviderEndpoints).setIdpSelectionPageURL(properties.getIdpSelectionPageUrl()); verify(serviceProviderEndpoints).setSsoLoginURL(properties.getSsoLoginUrl()); verify(discoveryFilter).setFilterProcessesUrl(eq(properties.getDiscoveryProcessingUrl())); verify(discoveryFilter).setIdpSelectionPath(eq(properties.getIdpSelectionPageUrl())); verify(entryPoint).setFilterProcessesUrl(eq(properties.getSsoLoginUrl())); ArgumentCaptor<WebSSOProfileOptions> optionsCaptor = ArgumentCaptor.forClass(WebSSOProfileOptions.class); verify(entryPoint).setDefaultProfileOptions(optionsCaptor.capture()); WebSSOProfileOptions options = optionsCaptor.getValue(); Assertions.assertThat(options.isAllowCreate()).isEqualTo(properties.getProfileOptions().getAllowCreate()); Assertions.assertThat(options.getAllowedIDPs()).isEqualTo(properties.getProfileOptions().getAllowedIdps()); Assertions.assertThat(options.getAssertionConsumerIndex()).isEqualTo(properties.getProfileOptions().getAssertionConsumerIndex()); Assertions.assertThat(options.getAuthnContextComparison()).isEqualTo(properties.getProfileOptions().getAuthnContextComparison()); Assertions.assertThat(options.getAuthnContexts()).isEqualTo(properties.getProfileOptions().getAuthnContexts()); Assertions.assertThat(options.getBinding()).isEqualTo(properties.getProfileOptions().getBinding()); Assertions.assertThat(options.getForceAuthN()).isEqualTo(properties.getProfileOptions().getForceAuthn()); Assertions.assertThat(options.isIncludeScoping()).isEqualTo(properties.getProfileOptions().getIncludeScoping()); Assertions.assertThat(options.getNameID()).isEqualTo(properties.getProfileOptions().getNameId()); Assertions.assertThat(options.getPassive()).isEqualTo(properties.getProfileOptions().getPassive()); Assertions.assertThat(options.getProviderName()).isEqualTo(properties.getProfileOptions().getProviderName()); Assertions.assertThat(options.getProxyCount()).isEqualTo(properties.getProfileOptions().getProxyCount()); Assertions.assertThat(options.getRelayState()).isEqualTo(properties.getProfileOptions().getRelayState()); verify(builder).setSharedObject(eq(SAMLProcessingFilter.class), eq(ssoFilter)); verify(builder).setSharedObject(eq(SAMLWebSSOHoKProcessingFilter.class), eq(ssoHoKFilter)); verify(builder).setSharedObject(eq(SAMLDiscovery.class), eq(discoveryFilter)); verify(builder).setSharedObject(eq(SAMLEntryPoint.class), eq(entryPoint)); }
@Test public void configure_custom_noHoK() throws Exception { SSOConfigurer configurer = spy(new SSOConfigurer()); SAMLProcessingFilter ssoFilter = mock(SAMLProcessingFilter.class); when(configurer.createDefaultSamlProcessingFilter()).thenReturn(ssoFilter); SAMLWebSSOHoKProcessingFilter ssoHoKFilter = mock(SAMLWebSSOHoKProcessingFilter.class); when(configurer.createDefaultSamlHoKProcessingFilter()).thenReturn(ssoHoKFilter); SAMLDiscovery discoveryFilter = mock(SAMLDiscovery.class); when(configurer.createDefaultSamlDiscoveryFilter()).thenReturn(discoveryFilter); SAMLEntryPoint entryPoint = mock(SAMLEntryPoint.class); when(configurer.createDefaultSamlEntryPoint()).thenReturn(entryPoint); SavedRequestAwareAuthenticationSuccessHandler successHandler = mock(SavedRequestAwareAuthenticationSuccessHandler.class); SimpleUrlAuthenticationFailureHandler failureHandler = mock(SimpleUrlAuthenticationFailureHandler.class); WebSSOProfileOptions profileOptions = mock(WebSSOProfileOptions.class); configurer.init(builder); configurer .defaultSuccessURL("/success") .failureHandler(failureHandler) .successHandler(successHandler) .defaultFailureURL("/failure") .discoveryProcessingURL("/discovery") .enableSsoHoK(false) .idpSelectionPageURL("/idp") .profileOptions(profileOptions) .ssoHoKProcessingURL("/hok") .ssoLoginURL("/login") .ssoProcessingURL("/sso"); configurer.configure(builder); verify(properties, never()).getDefaultFailureUrl(); verify(properties, never()).getDefaultSuccessUrl(); verify(properties, never()).getDiscoveryProcessingUrl(); verify(properties, never()).getIdpSelectionPageUrl(); verify(properties, never()).getSsoHokProcessingUrl(); verify(properties, never()).getSsoLoginUrl(); verify(properties, never()).getSsoProcessingUrl(); verify(properties, never()).getProfileOptions(); verify(successHandler, never()).setDefaultTargetUrl(eq("/success")); verify(failureHandler, never()).setDefaultFailureUrl(eq("/failure")); verify(ssoFilter).setAuthenticationManager(eq(authenticationManager)); verify(ssoFilter).setAuthenticationSuccessHandler(eq(successHandler)); verify(ssoFilter).setAuthenticationFailureHandler(eq(failureHandler)); verify(ssoFilter).setFilterProcessesUrl(eq("/sso")); verify(ssoHoKFilter, never()).setAuthenticationManager(eq(authenticationManager)); verify(ssoHoKFilter, never()).setAuthenticationSuccessHandler(eq(successHandler)); verify(ssoHoKFilter, never()).setAuthenticationFailureHandler(eq(failureHandler)); verify(ssoHoKFilter, never()).setFilterProcessesUrl(eq("/hok")); verify(serviceProviderEndpoints).setSsoProcessingURL("/sso"); verify(serviceProviderEndpoints, never()).setSsoHoKProcessingURL("/hok"); verify(serviceProviderEndpoints).setDefaultFailureURL("/failure"); verify(serviceProviderEndpoints).setDiscoveryProcessingURL("/discovery"); verify(serviceProviderEndpoints).setIdpSelectionPageURL("/idp"); verify(serviceProviderEndpoints).setSsoLoginURL("/login"); verify(discoveryFilter).setFilterProcessesUrl(eq("/discovery")); verify(discoveryFilter).setIdpSelectionPath(eq("/idp")); verify(entryPoint).setFilterProcessesUrl(eq("/login")); verify(entryPoint).setDefaultProfileOptions(eq(profileOptions)); verify(builder).setSharedObject(eq(SAMLProcessingFilter.class), eq(ssoFilter)); verify(builder).setSharedObject(eq(SAMLWebSSOHoKProcessingFilter.class), eq(null)); verify(builder).setSharedObject(eq(SAMLDiscovery.class), eq(discoveryFilter)); verify(builder).setSharedObject(eq(SAMLEntryPoint.class), eq(entryPoint)); }
@Bean public SavedRequestAwareAuthenticationSuccessHandler successRedirectHandler() { SavedRequestAwareAuthenticationSuccessHandler handler = new SavedRequestAwareAuthenticationSuccessHandler(); handler.setDefaultTargetUrl("/home"); return handler; }
private SavedRequestAwareAuthenticationSuccessHandler loginSuccessHandler() { SavedRequestAwareAuthenticationSuccessHandler handler = new SavedRequestAwareAuthenticationSuccessHandler(); handler.setUseReferer(true); return handler; }
public void loginUser(SAMLSessionInfo samlSessionInfo, HttpServletRequest request, HttpServletResponse response) { ApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(request.getSession().getServletContext()); UserRepository userRepository = context.getBean(UserRepository.class); Map<String, String> attributes = samlSessionInfo.getAttributes(); String samlUserId = attributes.get("Subject_SerialNumber"); User user = userRepository.findBySaml2Id(samlUserId); if (user == null) { //Create new user RoleRepository roleRepository = context.getBean(RoleRepository.class); Role roleUser = roleRepository.findFirstByName("ROLE_USER"); user = new User(samlUserId, UUID.randomUUID().toString(), true, Collections.singleton(roleUser)); user.setSaml2Id(samlUserId); user = userRepository.save(user); } //Authorize this user Authentication authentication = new UsernamePasswordAuthenticationToken(user, null, user.getAuthorities()); SecurityContextHolder.getContext().setAuthentication(authentication); AuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler(); try { successHandler.onAuthenticationSuccess(request, response, authentication); } catch (Exception e) { e.printStackTrace(); } // SecurityContextHolder.getContext().setAuthentication(authentication); // user.setActive(true); // user.setCompany(attributes.get("Subject_OrganisationName")); // user.setSessionId(attributes.get("CertificateSerialNumber")); // user.setCountry(attributes.get("Subject_CountryName")); // user.setFirstName(attributes.get("Subject_GivenName")); // user.setLastName(attributes.get("Subject_Surname")); // user.setLoginName(attributes.get("Subject_SerialNumber")); // UserDomainObject user = prepareUser(samlSessionInfo); // UserDomainObject dbUser = Imcms.getServices().getImcmsAuthenticatorAndUserAndRoleMapper().getUser(user.getLoginName()); // if (dbUser != null) { // for (RoleId role : dbUser.getRoleIds()) // user.addRoleId(role); // user.setId(dbUser.getId()); // } else // try { // user.addRoleId(RoleId.CGIUSER); // Imcms.getServices().getImcmsAuthenticatorAndUserAndRoleMapper().addUser(user); // } catch (UserAlreadyExistsException e) { // e.printStackTrace(); // } // // ContentManagementSystem cms = Utility.initRequestWithApi(request, user); // if (Imcms.getServices().getConfig().isDenyMultipleUserLogin()) { // User currentUser = cms.getCurrentUser(); // currentUser.setSessionId(request.getSession().getId()); // cms.getUserService().updateUserSession(currentUser); // } // String rememberCd = user.getRememberCd(); // if (StringUtils.isEmpty(rememberCd)) { // cms.getUserService().updateUserRememberCd(user); // } // Utility.setRememberCdCookie(request, response, user.getRememberCd()); // // Utility.makeUserLoggedIn(request, user); // // try { // response.sendRedirect("StartDoc"); // } catch (IOException e) { // e.printStackTrace(); // } }