본문 바로가기

플밍 is 뭔들/SPRING

[SPRING SECURITY] 2.스프링 시큐리티 security-context.xml 알아보기

- 스프링 시큐리티는 어떤 웹페이지에 접속할 때에 접속자의 권한을 반드시 확인하고 권한에 맞는 페이지만 보여준다.
 
아래 예제를 보자, 이 예제는 구글링해서 찾은 security-context.xml의 예제이다.
간단히 예제를 설명하자면 다음과 같다.

<http> 안에 있는 <intercept-url>은 해당 페이지의 접속 권한에 대해 설정한다.
즉 저 예제는 모든페이지(/**)는 ROLE_USER만이 접속할 수 있다는 말이다.

그리고 <authentication-manager> 속성은 유저들의 권한을 설정한다.
즉 아이디가 guest이고 비밀번호가 guest인 사람의 권한은 ROLE_USER로써 저 웹페이지에 접근할 권한이 있다.
또한 권한을 가진 유저가 하나이므로 저 아이디를 제외한 모든 아이디는 권한이 없으므로 접근이 불가능 하다.

<?xml version="1.0" encoding="UTF-8"?>
            
    <http auto-config='true'>
        <intercept-url pattern="/**" access="ROLE_USER" />
    </http>
       
    <authentication-manager>
        <authentication-provider>
            <user-service>
                <user name="guest" password="guest" authorities="ROLE_USER"/>   
            </user-service>
        </authentication-provider>
    </authentication-manager>
</beans:beans>

그리고 앞의 스프링 시큐리티기본세팅을 한 후 security-context.xml에 위의 예제를 적용시켜 놓으면 
다음과 같은 화면이 뜬다.

이 화면이 왜뜨는 것인가?
이 화면은 스프링 시큐리티에서 기본적으로 지원해주는 로그인 폼이다. 스프링 시큐리티는 기본적으로 
권한을 인증받고 접속이 가능하도록 되어있다. 그렇기 때문에 관련 프로젝트의 url을 입력했을때 사용자 인증이
되지 않았다면 위의 저 화면을 보여준다.

하지만 우리는 저 로그인 화면을 그대로 사용할 수 없다. 프로젝트마다 로그인화면이 천차 만별이다.
또한 로그인시 대부분의 프로젝트들이 사용자 정보를 DB에서 불러온다.
저렇게 xml파일에 관리자와 특정 유저의 정보를 적어놓고 관리할 수는 있겠지만 사용자가 많아진다면?
저런식으로 관리하긴 힘들어질것이다.
그렇기 때문에 우리 입맛에 맞게 커스터마이징을 하여 사용해야 한다.
다음장에 커스터마이징에 대해 알아보자