我有一个spring引导应用程序,它使用来自wso2身份服务器的oauth2身份验证。当我在spring工具套装上运行应用程序时,它工作了,所以我可以在里面唱歌并使用我的网站。但是,当我在tomcat(9.0)上运行应用程序时,我尝试访问一个页面,并重定向到登录页面,当我尝试登录时,会出现错误err\u too\u many\u 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\u too\u many\u重定向。
用户可以进行身份验证,但应用程序重定向并转到导致错误的循环,该循环位于URL 1、2、3、4之间。
tomcat日志
Spring Boot配置:
登录控制器.java
@Controller
public class LoginController {
@GetMapping("/oauth-login")
public String getLoginPage(Model model) {
return "redirect:/oauth2/authorization/wso2";
}
}
配置安全.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");
}
}
应用程序属性
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文件时,它可以工作,但是当我在tomcat上运行一个.war文件时,它就不工作了。
1条答案
按热度按时间2q5ifsrm1#
经过多次研究,我发现了我的错误。我的配置是正确的,但是当我在tomcat上运行我的spring boot应用程序时,我必须将我的应用程序配置为在它上运行,但是还有另一种方法,我用最简单的方法运行我的应用程序,我生成.jat并用下面的命令执行
因此,我删除tomcat服务器来部署spring引导应用程序。