Spring Boot OAuth2, с Tomcat и nginx получает ошибку ERR_TOO_MANY_REDIRECTS после аутентификации

#java #spring #tomcat #spring-security #spring-security-oauth2

#java #весна #tomcat #весна-безопасность #spring-security-oauth2

Вопрос:

У меня есть приложение Spring Boot, оно использует аутентификацию OAuth2 с сервера идентификации WSO2. Когда я запускаю приложение на Spring Tool Suit, оно работает, так что я могу петь и использовать свой веб-сайт. Но когда я запускаю свое приложение на Tomcat (9.0), я пытаюсь получить доступ к странице и перенаправить на страницу входа, и когда я пытаюсь войти в систему, я получаю сообщение об ошибке ERR_TOO_MANY_REDIRECTS

Пример ошибки: когда мое приложение spring boot запускается на Tomcat, и я пытаюсь получить доступ к HTML-странице: https://domain/chat/example.html

если пользователь не прошел проверку подлинности, перенаправляется на страницу входа в систему WSO2 Identity Server: https://domain/is/authenticationendpoint/login.do

после входа в систему страница перенаправляется на указанные ниже URL-адреса, а не перенаправляется на URL-адрес (https://domain/chat/example.html )

  1. https://domain/is/oauth2/authorize
  2. https://domain/chat/oauth2/authorization/wso2
  3. https://domain/chat/login/oauth2/code/wso2
  4. https://domain/chat/login

Эти страницы возвращают ошибку ERR_TOO_MANY_REDIRECTS.

Пользователь может пройти аутентификацию, но приложение перенаправляет и переходит к циклу, который вызывает ошибку, цикл находится между URL-адресами 1,2,3,4.

Журнал Tomcat
введите описание изображения здесь

Конфигурации весенней загрузки:

LoginController.java

 @Controller
public class LoginController {

    @GetMapping("/oauth-login")
    public String getLoginPage(Model model) {

        return "redirect:/oauth2/authorization/wso2";
    }
}
 

ConfigSecurity.java

 @EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)//abilitar seguranca nos metodos
public class ConfigSecurity extends WebSecurityConfigurerAdapter {
    
   protected void configure(HttpSecurity http) throws Exception {

        http.authorizeRequests()
                .antMatchers("/oauth-login")
                .permitAll()
                .anyRequest()
                .authenticated()
                .and()
                .oauth2Login().loginPage("/oauth-login")
                .and()
                .logout().logoutUrl("/applogout");

    }
}
 

application.properties

 server.port=8443

spring.security.oauth2.client.registration.wso2.client-name=WSO2 Identity Server
spring.security.oauth2.client.registration.wso2.client-id=asdasd
spring.security.oauth2.client.registration.wso2.client-secret=asdasd
spring.security.oauth2.client.registration.wso2.redirect-uri=https://domain/chat/login/oauth2/code/wso2
spring.security.oauth2.client.registration.wso2.authorization-grant-type=authorization_code
spring.security.oauth2.client.registration.wso2.scope=openid

#Identity Server Properties
spring.security.oauth2.client.provider.wso2.authorization-uri=https://domain/is/oauth2/authorize
spring.security.oauth2.client.provider.wso2.token-uri=https://domain/is/oauth2/token
spring.security.oauth2.client.provider.wso2.user-info-uri=https://domain/is/oauth2/userinfo
spring.security.oauth2.client.provider.wso2.jwk-set-uri=https://domain/is/oauth2/jwks
 

Это мой git: https://github.com/Mingato/Root2

Я следовал руководству: https://medium.com/@piraveenaparalogarajah/secure-your-spring-boot-application-with-wso2-identity-server-8140af8aa30b

Когда я запускаю файл .jar, он работает, но когда я запускаю файл .war на tomcat, он не работает.

Ответ №1:

После многих исследований я обнаружил свою ошибку. Мои настройки верны, но когда я запускаю свое приложение Spring boot на Tomcat, я должен настроить свое приложение для запуска на нем, но есть и другой способ, я запускаю свое приложение самым простым способом, я генерирую файл .jat и выполняю с помощью команды ниже

   java -jar myapp.jar
 

Поэтому я удаляю сервер Tomcat для развертывания моих приложений spring boot.