Closed jisoo449 closed 6 months ago
참고할 수 있는 코드
<security:http auto-config="true" use-expressions="true">
<!-- 특정 경로에 대한 접근 제어 -->
<security:intercept-url pattern="/admin/**" access="hasRole('ROLE_ADMIN')" />
<security:intercept-url pattern="/user/**" access="hasRole('ROLE_USER')" />
<security:intercept-url pattern="/**" access="permitAll" />
<!-- Custom Login Page -->
<security:form-login
login-page="/login"
default-target-url="/home"
authentication-failure-url="/login?error=true"
username-parameter="username"
password-parameter="password" />
<!-- Logout Configuration -->
<security:logout
logout-success-url="/login?logout=true" />
<!-- CSRF Protection -->
<security:csrf disabled="true"/>
<!-- CORS Configuration -->
<security:cors configuration-source-ref="corsConfigurationSource"/>
</security:http>
<!-- CORS Bean Configuration -->
<bean id="corsConfigurationSource" class="org.springframework.web.cors.UrlBasedCorsConfigurationSource">
<property name="corsConfigurations">
<map>
<entry key="/**">
<bean class="org.springframework.web.cors.CorsConfiguration">
<property name="allowedOrigins">
<list>
<value>*</value>
</list>
</property>
<property name="allowedMethods">
<list>
<value>GET</value>
<value>POST</value>
</list>
</property>
</bean>
</entry>
</map>
</property>
</bean>
설명
Spring security는 기본적으로 CSRF Protection 기능을 제공한다.
이로 인해 프론트-백 연결이 제대로 수행되지 않는 문제가 발생할 수 있다. 이를 해결하기 위해서는 CORS를 허용할 origin을 직접 지정해 주어야 한다.
현재 /stu/main/resources의 config 폴더에 정의된 context-security.xml에서 csrf를 disabled로 설정 해 두었다. 따라서 이에 대한 조치가 필요하다.