📍 Spring Security
- 웹 애플리케이션에 대한 인증/인가 보안을 담당하는 프레임워크
* 인증 : 누구?
* 인가 : 권한에 따라 접근 가능/불가
- 인증(Authentication)
- 사용자의 신원을 확인하는 과정
- 해당 사용자가 본인이 맞는지 확인하는 과정
- 인가(Authorization)
- 해당 사용자가 요청하는 자원을 실행할 수 있는 권한을 가지고 있는지 확인하는 과정
- 인가과정은 항상 인증과정이 선행된다.
(인증되지 않은 사용자는 사용자의 권한을 확인할 수 없기 때문에 인가과정을 처리할 수 없다.)
스프링 시큐리티 태그 라이브러리
- 의존성
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-taglibs</artifactId>
</dependency>
- 종류
1. 권한태그 : <sec:authorize>
- access 속성의 값을 판정해서 태그 내의 내용을 표현할지 여부를 결정한다.
<if> 같은 역할
- 예시)
- 익명 사용자일 때
- isAnonymous()는 true로 판정된다.
<sec:authorize access="isAnonymous()">
<a href="">로그인</a>
</sec:authorize>
- 인증된 사용자일 때
- isAuthenticated()는 true로 판정된다.
<sec:authorize access="isAuthenticated()">
<a href="">로그아웃</a>
</sec:authorize>
- 인증된 사용자가 권한을 보유하고 있을 때
- hasRole('ROLE_ADMIN')는 인증된 사용자가 관리자 권한을 가지고 있을 때 true로 판정된다.
<sec:authorize access="hasRole('ROLE_ADMIN')">
<a href="">사용자 관리</a>
<a href="">상품 관리</a>
<a href="">장바구니 관리</a>
<a href="">주문 관리</a>
</sec:authorize>
- 인증된 사용자가 설정된 권한 중 하나의 권한을 보유하고 있을 때
- hasAnyRole('ROLE_ADMIN', 'ROLE_MANAGER')은 인증된 사용자가 ADMIN 혹은 MANAGER 권한 중 하나를 가지고 있을 때 true로 판정된다.
<sec:authorize access="hasAnyRole('ROLE_ADMIN', 'ROLE_MANAGER')">
</sec:authorize>
2. 인증태그 : <sec:authentication>
- 인증된 사용자가 정보를 가지고 있는 Authentication 객체에 대한 접근을 제공하는 태그