En mi aplicación Spring Boot, implementé el inicio de sesión con Spring Social (1.1.4.RELEASE) (Facebook, Google, LinkedIn y Twitter).
Durante el proceso de inicio de sesión, el servidor llama al siguiente HTTP GET:
https://accounts.google.com/o/oauth2/auth?client_id=XXX&response_type=code&redirect_uri=http://xzy.com:91/auth/google&scope=email&state=YYYEl problema está aquí: redirect_uri=http://xzy.com:91/auth/google
La aplicación está detrás del proxy y necesito cambiar el redirect_uri a
http://xzy.com:91/auth/google -> http://xzy.com/auth/google
Supongo que este es un problema bastante común, pero no pude encontrar una solución funcional (
mi pom:
<dependency> <groupId>org.springframework.social</groupId> <artifactId>spring-social-security</artifactId> <version>${spring-social-version}</version> </dependency> <dependency> <groupId>org.springframework.social</groupId> <artifactId>spring-social-linkedin</artifactId> <version>${spring-social-linkedin.version}</version> </dependency> <dependency> <groupId>org.springframework.social</groupId> <artifactId>spring-social-twitter</artifactId> <version>${spring-social-twitter.version}</version> </dependency> <dependency> <groupId>org.springframework.social</groupId> <artifactId>spring-social-google</artifactId> <version>${spring-social-google.version}</version> </dependency> <dependency> <groupId>org.springframework.social</groupId> <artifactId>spring-social-facebook</artifactId> <version>${spring-social-facebook.version}</version> </dependency>@Bean public ProviderSignInController providerSignInController(ConnectionFactoryLocator connectionFactoryLocator, UsersConnectionRepository usersConnectionRepository) { ProviderSignInController controller = new ProviderSignInController(connectionFactoryLocator, usersConnectionRepository, new SimpleSignInAdapter()); // get the url from config, this just for example controller.setApplicationUrl("http://xzy.com"); return controller; } Como puede leer en el código de spring-social , la application url reemplazará a la URL base.
protected String callbackUrl(NativeWebRequest request) { if (callbackUrl != null) { return callbackUrl; } HttpServletRequest nativeRequest = request.getNativeRequest(HttpServletRequest.class); if (applicationUrl != null) { return applicationUrl + connectPath(nativeRequest); } else { return nativeRequest.getRequestURL().toString(); } }