[SPRING]#20 도서 쇼핑몰 구현 (스프링 시큐리티2)

2024. 1. 9. 17:58·SPRING
반응형

접근 권한을 설정하는 시큐리티 태그

인증된 특정 사용자에 따라 특정 경로에 접근 가능케 하는 태그로 <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
'SPRING' 카테고리의 다른 글
  • [SPRING]#22 도서 쇼핑몰 구현 (스프링 시큐리티4)
  • [SPRING]#21 도서 쇼핑몰 구현 (스프링 시큐리티3)
  • [SPRING]#19 도서 쇼핑몰 구현 (스프링 시큐리티1)
  • [SPRING]#18 도서 쇼핑몰 구현 (커스텀 데이터 바인딩)
아모사
아모사
혼자서 공부, 정리 하는 공간
  • 아모사
    아무것도 몰라요
    아모사
  • 전체
    오늘
    어제
    • 분류 전체보기 (211)
      • DJANGO (10)
        • Django REST (10)
      • 알고리즘 (36)
      • JAVA (16)
      • JSP (2)
      • SPRING (98)
      • GIT (14)
      • CS_운영체제 (8)
      • CS_네트워크 (6)
      • 취업관련 (0)
      • CS_데이터베이스 (6)
      • CS_디자인 패턴 (6)
      • 면접 대비 (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
아모사
[SPRING]#20 도서 쇼핑몰 구현 (스프링 시큐리티2)
상단으로

티스토리툴바