본문 바로가기

Dev-/Spring

아주 기초적인 Spring Security 사용법 (1)

개인 프로젝트에서 사용자 권한과, 인증에 대한 부분이 많이 부족했던 것 같아,,

팀프로젝트에서는 스프링 시큐리티를 공부해 적용해보고 싶어졌습니다.


근데 설정이나 원리가 좀 복잡한 것 같아서,, 차근차근 공부하며 정리해보려고 합니다.



기초적인 스프링 시큐리티를 적용법을 알아보도록 하겠습니다.


[pom.xml]


위와 같이 두가지 라이브러리를 추가해줍니다.



그리고 security-context.xml 파일을 추가해준 뒤, web.xml에 등록해줍니다.


[security-context.xml]





[web.xml]




security-context.xml을 잠깐 보고 가자면,


사용자의 각 권한별로 접근 가능한 url 패턴을 설정해주었습니다.


컨트롤러가 <security:intercept-url>pattern에 해당하는 요청을 받았을 때,

access로 설정한 권한을 가지고 있어야 접근가능합니다.

(최소 권한이 아니라, 지정된 권한'만' 허용됩니다.)


그 아래는 각 권한의 name, password를 설정해주는 부분입니다.

({noop}은 추후 말씀드리겠습니다.)



컨트롤러에서는 위에서 설정한 요청에 대해 보여줄 페이지로 리턴해줍니다.

그냥 어떤 페이지인지 알 수 있게끔만 해주었습니다.


[Controller.java]



이제 프로젝트를 실행시키고,

권한을 설정해 둔 요청을 해봅시다. /forMember로 해보겠습니다.



/forMember에는 "ROLE_MEMBER"권한을 가진 사용자만 접근가능하도록 설정되어 있어

사용자에게 강제로 인증을 요구합니다.


security-context.xml에서 설정한 정보를 입력해 사용자 인증을 통과하면

아래와 같이 /forMember 요청을 탈 수 있게 됩니다.




.... 스프링 시큐리티의 감 정도 익힐 수 있는 포스팅이었습니다.

실제로 이정도 설정으로는 개인 프로젝트에도 적용할 수 없을 것 같네요.



실제 웹에서는 암호화, 인증, 인가 등 여러가지 커스터마이징 할 게 상당히 많은데, 

스프링 시큐리티는 설정만 잘 해주면, 간편하게 적용할 수 있다고 합니다. 

암호화도 자체적으로 잘 해준다고 하고,,,


관련 설정이나, 전체적인 구조에 대해서 공부가 더 필요할 듯 합니다.



이까지 하고,, 

아래는 스프링 시큐리티를 적용하면서 겪었던 에러 해결법입니다.


(참고: Spring Security 관련 에러 해결법)