Spring Nuage Single Sign On, mais seulement si elle est déjà connecté

voix
1

J'ai un serveur oauth2 nuage printemps et en cours d'exécution avec JWT et un client qui configuration ressemble à ceci

@EnableOAuth2Sso
public class PortalApplication {

    public static void main(String[] args) {
        SpringApplication.run(PortalApplication.class, args);
    }

    @Component
    public static class LoginConfigurer extends OAuth2SsoConfigurerAdapter {

        @Override
        public void match(RequestMatchers matchers) {
            matchers.antMatchers(/**);
        }

        @Override
        public void configure(HttpSecurity http) throws Exception {
            http
                .authorizeRequests()
                    .anyRequest()
                    .authenticated()
                .and()
                .csrf()
                    .csrfTokenRepository(csrfTokenRepository())
                .and()
                .addFilterAfter(csrfHeaderFilter(), CsrfFilter.class);
        }

        private Filter csrfHeaderFilter() {
            return new OncePerRequestFilter() {
                @Override
                protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
                    CsrfToken csrf = (CsrfToken) request.getAttribute(CsrfToken.class.getName());
                    if (csrf != null) {
                        Cookie cookie = new Cookie(XSRF-TOKEN, csrf.getToken());
                        cookie.setPath(/);
                        response.addCookie(cookie);
                    }
                    filterChain.doFilter(request, response);
                }
            };
        }

        private CsrfTokenRepository csrfTokenRepository() {
            HttpSessionCsrfTokenRepository repository = new HttpSessionCsrfTokenRepository();
            repository.setHeaderName(X-XSRF-TOKEN);
            return repository;
        }
    }
}

Tout cela est bien et l'application redirige vers le serveur auth et redirige vers l'application Portal lorsque vous avez terminé.

Numéro client deux

Mais maintenant, j'ai un autre client qui est une boutique en ligne.

Si l'utilisateur est connecté au serveur auth alors la boutique en ligne devrait afficher une barre en haut avec des liens vers les utilisateurs des commandes précédentes et un profil.

Si l'utilisateur est pas connecté, alors rien ne devrait se produire jusqu'à ce que l'étape de la commande où ils devront soit connexion ou créer un compte.

Question

Comment puis-je connexion automatique si je suis déjà connecté au serveur auth, mais permettre aux utilisateurs anonymes autrement?

Puis-je utiliser en quelque sorte le spring.oauth2.resource.userInfoUri pour y parvenir?

Créé 11/03/2015 à 12:39
source utilisateur
Dans d'autres langues...                            


1 réponses

Spring Nuage Single Sign On, mais seulement si elle est déjà connecté

voix
1

J'ai un serveur oauth2 nuage printemps et en cours d'exécution avec JWT et un client qui configuration ressemble à ceci

@EnableOAuth2Sso
public class PortalApplication {

    public static void main(String[] args) {
        SpringApplication.run(PortalApplication.class, args);
    }

    @Component
    public static class LoginConfigurer extends OAuth2SsoConfigurerAdapter {

        @Override
        public void match(RequestMatchers matchers) {
            matchers.antMatchers("/**");
        }

        @Override
        public void configure(HttpSecurity http) throws Exception {
            http
                .authorizeRequests()
                    .anyRequest()
                    .authenticated()
                .and()
                .csrf()
                    .csrfTokenRepository(csrfTokenRepository())
                .and()
                .addFilterAfter(csrfHeaderFilter(), CsrfFilter.class);
        }

        private Filter csrfHeaderFilter() {
            return new OncePerRequestFilter() {
                @Override
                protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
                    CsrfToken csrf = (CsrfToken) request.getAttribute(CsrfToken.class.getName());
                    if (csrf != null) {
                        Cookie cookie = new Cookie("XSRF-TOKEN", csrf.getToken());
                        cookie.setPath("/");
                        response.addCookie(cookie);
                    }
                    filterChain.doFilter(request, response);
                }
            };
        }

        private CsrfTokenRepository csrfTokenRepository() {
            HttpSessionCsrfTokenRepository repository = new HttpSessionCsrfTokenRepository();
            repository.setHeaderName("X-XSRF-TOKEN");
            return repository;
        }
    }
}

Tout cela est bien et l'application redirige vers le serveur auth et redirige vers l'application Portal lorsque vous avez terminé.

Numéro client deux

Mais maintenant, j'ai un autre client qui est une boutique en ligne.

Si l'utilisateur est connecté au serveur auth alors la boutique en ligne devrait afficher une barre en haut avec des liens vers les utilisateurs des commandes précédentes et un profil.

Si l'utilisateur est pas connecté, alors rien ne devrait se produire jusqu'à ce que l'étape de la commande où ils devront soit connexion ou créer un compte.

Question

Comment puis-je connexion automatique si je suis déjà connecté au serveur auth, mais permettre aux utilisateurs anonymes autrement?

Puis-je utiliser en quelque sorte le spring.oauth2.resource.userInfoUri pour y parvenir?

Créé 11/03/2015 à 12:39
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more