본문 바로가기
Study Hard/HW

[스프링시큐리티] role명에 "ROLE_" 접두사를 꼭 붙여야 하는가? (해결방법)

by 코플+ 2023. 6. 25.

오늘 하루종일 Spring MVC 프로젝트의 시큐리티를 구현하는데 힘썼다.

 

그중 3시간은 역할설정할때 role앞에 접두사 "ROLE"이 필수인지, 그리고 수정할수 있는것인지 검색하는데 시간을 보내서 정리해본다.

 

삽질1. 처음에는 role_을 써야하는것으로 배웠지만 혹시 안써도 자동으로 bind되는지 삽질을 1시간가량 해보았다.

 

삽질2. 국내 티스토리 검색

- 검색해도 대부분 "ROLE_" 접두사가 필수인것처럼 작성한 블로그들이 대부분이었다.

- 덕분에 희망고문 당하면서 시간을 많이 뺏겼다.

 

삽질3. 스프링 공식 문서 검색

https://docs.spring.io/spring-security/reference/servlet/appendix/faq.html#appendix-faq-role-prefix

 

Spring Security FAQ :: Spring Security

This FAQ answers the following general questions: Can Spring Security take care of all my application security requirements? Spring Security provides you with a flexible framework for your authentication and authorization requirements, but there are many o

docs.spring.io

 

공식문서 검색에 힌트를 얻어서 RoleVoter 수정을 하면 된다고 한다. 

 

 

아래와 같이 perfix를 빈칸으로 web.xml에 적용하면 접두사없이 사용가능하다.

 

<beans:bean id="accessDecisionManager" class="org.springframework.security.access.vote.AffirmativeBased">
	<beans:constructor-arg>
		<beans:list>
			<beans:bean class="org.springframework.security.access.vote.RoleVoter">
				<beans:property name="rolePrefix" value="" />
			</beans:bean>
			<beans:bean class="org.springframework.security.access.vote.AuthenticatedVoter" />
		</beans:list>
	</beans:constructor-arg>
	<beans:property name="allowIfAllAbstainDecisions" value="false" />
</beans:bean>

 

 

댓글