반응형
접근 권한을 설정하는 시큐리티 태그
인증된 특정 사용자에 따라 특정 경로에 접근 가능케 하는 태그로 <http>와
<intercept-url> 태그가 있습니다.
<http> 태그
스프링 시큐리티 설정의 핵심으로 <http>...</http> 안에 스프링 시큐리티 관련 내용을 포함시킵니다.
다음은 <http>태그의 속성입니다.
속성 | 설명 |
auto-config | 일반적인 웹 애플리케이션에 필요한 기본 보안 서비스를 자동으로 설정 |
use-expressions | <intercept-url> 태그의 access 속성에서 스프링 표현 언어를 사용 가능 |
다음은 <http> 태그 사용 예시입니다.
<http auto-config='true' use-expressions="true">
//생략
</http>
<intercept-url> 태그
접근 권한에 대한 URL 패턴을 설정할 때 사용합니다.
<http> 태그 안에 여러 개 설정 가능하며 선언 순서대로 접근 권한이 적용됩니다.
다음은 <intercept-url> 태그 속성입니다.
속성 | 설명 |
pattern | ant 경로 패턴을 사용해서 접근 경로를 설정 |
access | pattern 속성에 설정된 경로 패턴에 접근할 수 있도록 사용자 권한 설정 |
requires-channel | 정의된 패턴 URL로 접근하면 설정 옵션 URL로 리다이렉션 |
다음은 <intercept-url> 태그 예시입니다.
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans...>
<http use-expressions="true">
<intercept-url pattern="/admin/**" access="hasAuthority('ROLE_ADMIN')" />
<intercept-url pattern="/manager/**" access="hasRole('ROLE_MANAGER')" />
<intercept-url pattern="/member/**" access="IsAuthenticated()" />
<intercept-url pattern="/**" access="permitAll" />
</http>
...
</beans:beans>
/admin/** 경로는 ROLE_ADMIN 권한이 있는 사용자만 접근이 가능합니다.
그 외 사용자는 접근할 수 없습니다.
/manager/** 경로는 ROLE_MANAGER 권한이 있는 사용자만 접근이 가능합니다.
그 외 사용자는 접근할 수 없습니다.
/member/** 경로는 인증된 사용자만 접근이 가능합니다.
그 외 사용자는 접근할 수 없습니다.
/** 경로는 권한에 상관없이 모두 접근할 수 있습니다.
<intercept-url> 태그의 access 속성에 스프링 표현 언어를 사용하려면
<http> 태그 안에 use-expressions를 true로 설정합니다.
다음은 스프링 표현 언어 표입니다.
표현 | 설명 |
hasRole([role]) | 현 권한자가 지정된 [role]을 가졌다면 true 반환 [role]에서 'ROLE_' 접두어 생략 가능 |
hasAnyRole([role1, role2]) | 현 권한자가 지정된 [role1, role2]에서 하나라도 가졌다면 true 반환 콤마로 구분하여 표현, 'ROLE_' 접두어 생략 가능 |
hasAuthority([authority]) | 현 권한자가 지정된 [authority]를 가졌다면 true 반환 [authority[에서 'ROLE_' 접두어 생략 가능 |
hasAnyAuthority([authority1, authority2]) | 현 권한자가 지정된 [authority1, authority2]에서 하나라도 가졌다면 true 반환 콤마로 구분하여 표현, 'ROLE_' 접두어 생략 가능 |
principal | 현 사용자를 나타내는 주요 객체에 직접 접근할 수 있도록 허락 |
authentication | SecurityContext에서 얻은 현 인증 객체에 직접 접근할 수 있도록 허락 |
permitAll | 현 권한자에 상관없이 항상 true |
denyAll | 현 권한자에 상관없이 항상 false |
isAnonymous() | 현 권한자가 익명의 사용자라면 true 반환 |
isRememberMe() | 현 권한자가 기억된 사용자면 true 반환 |
isAuthenticated() | 사용자가 익명이 아니면 true 반환 |
isFullyAuthenticated() | 익명의 사용자거나 기억된 사용자가 아니면 true 반환 |
스프링 표현 언어 방식이 아닐 때는 다음과 같이 설정 가능합니다.
권한 | 설명 |
ROLE_ADMIN | 관리자 |
ROLE_USER | 일반 사용자 |
ROLE_ANONYMOUS | 모든 사용자 |
ROLE_RESTRICTED | 제한된 사용자 |
IS_AUTHENTICATED_FULLY | 인증된 사용자 |
IS_AUTHENTICATED_ANONYMOUSLY | 익명 사용자 |
IS_AUTHENTICATED_REMEMBERED | REMEMBERED 사용자 |
반응형
'SPRING' 카테고리의 다른 글
[SPRING]#22 도서 쇼핑몰 구현 (스프링 시큐리티4) (0) | 2024.01.10 |
---|---|
[SPRING]#21 도서 쇼핑몰 구현 (스프링 시큐리티3) (0) | 2024.01.10 |
[SPRING]#19 도서 쇼핑몰 구현 (스프링 시큐리티1) (0) | 2024.01.09 |
[SPRING]#18 도서 쇼핑몰 구현 (커스텀 데이터 바인딩) (0) | 2024.01.09 |
[SPRING]#17 도서 쇼핑몰 구현 (데이터 바인딩3) (0) | 2024.01.08 |