#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 )
- https://domain/is/oauth2/authorize
- https://domain/chat/oauth2/authorization/wso2
- https://domain/chat/login/oauth2/code/wso2
- https://domain/chat/login
Эти страницы возвращают ошибку ERR_TOO_MANY_REDIRECTS.
Пользователь может пройти аутентификацию, но приложение перенаправляет и переходит к циклу, который вызывает ошибку, цикл находится между URL-адресами 1,2,3,4.
Конфигурации весенней загрузки:
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.