반응형
Spring Security에서 접근 제한을 통해 특정 페이지로 돌려보내는 설정을 할 수 있습니다.
우연히 Apache HTTPD - Tomcat AJP 구성을 하였는데
https 포트를 8080으로 구성하여 진행하게 되었습니다.
<!-- security.xml -->
<http>
<intercept-url pattern="/robots.txt" access="permitAll"/>
<intercept-url pattern="/**" access="hasRole('ROLE_USER')"/>
</http>
이상하게 접근 권한이 없는 경우 302 오류로 페이지가 이동하는데 접속된 8080 포트가 아닌 8443 포트로 이동하게 되는 현상이 발생하였습니다.
테스트 과정에서 단순 페이지를 호출하여 접근 제어 없이 "/" 메인 페이지로 보낸 경우 정상적인 https-8080 포트로 이동하는데 SpringSecurity에 걸리면 https-8443으로 이동하게 되어 확인한 결과 Spring Security에서는 프로토콜을 잘못 기재된 경우를 대비하여 https 프로토콜로 접속된 것 중 80 포트로 접속되면 443으로, 8080으로 접속되면 8443으로 보내는 설정이 되어 있었습니다.
가능하면 포트를 변경하면 좋겠지만, 해당 포트 사용이 필요한 경우 설정 변경합니다.
- PortMapperImpl : 기본 포트 설정
public PortMapperImpl() {
this.httpsPortMappings.put(80, 443);
this.httpsPortMappings.put(8080, 8443);
}
해당 클래스는 포트 설정을 할 때 기존 설정이 초기화되도록 구현되어 있습니다.
public void setPortMappings(Map<String, String> newMappings) {
this.httpsPortMappings.clear();
// ...
}
XML을 통해 http-https 포트 설정을 초기화하여 8080으로도 https 통신이 되도록 변경하였습니다.
관련한 규칙에 걸리지 않는다면 접속된 포트로 redirect 됩니다.
<http>
<intercept-url pattern="/robots.txt" access="permitAll"/>
<intercept-url pattern="/**" access="hasRole('ROLE_USER')"/>
<!-- PortMapper 및 PortResolver 설정 -->
<port-mappings>
<port-mapping http="80" https="443"/>
</port-mappings>
</http>
반응형
'FullStack > 21. Java' 카테고리의 다른 글
WebDriver를 이용한 Robot 방지 우회 (0) | 2024.01.08 |
---|---|
ProviderManager, AuthenticationProvider 차이 (0) | 2023.11.23 |
Azure Active Directory SSO - 사용자 프로파일(3) (0) | 2023.09.29 |
Azure Active Directory SSO - 로그인 코드(2) (0) | 2023.09.29 |
Azure Active Directory SSO - 연동 준비(1) (0) | 2023.09.29 |