티스토리 뷰
728x90
Authorization - 인가 처리
- 당신에게 무엇이 허가 되었는지 증명하는 것!
- Spring Security는 Authentication, Authorization 두 개의 영역으로 나눔
- 사용자가 자원에 접근하려고 할때 인증을 받았는지 안받았는지 여부를 먼저 확인
- 인증을 받았다면 사용자가 받은 권한이 해당 자원에 접근하기 위한 권한이 맞는지 확인한다!
- 인증을 먼저 확인하고 인가까지 확인한다!
스프링 시큐리티가 지원하는 권한 계층
웹 계층
- URL 요청에 따른 메뉴 혹은 화면단위의 레벨 보안
서비스 계층
- 화면 단위가 아닌 메소드 같은 기능 단위의 레벨 보안
도메인 계층(Access Control List, 접근제어목록)
- 객체 단위의 레벨 보안
FilterSecurityInterceptor
- 마지막에 위치한 필터로써 인증된 사용자에 대해 특정 요청의 승인및 거부 를 최종적으로 결정
- 인증객체 없이 보호자원에 접근을 시도하면 AuthenticationException 발생
- 인증 후 자원에 접근 가능한 권한이 존재하지 않을 경우 AccessDeniedException 을 발생
- 권한 제어 방식 중 HTTP 자원의 보안을 처리하는 필터
- URL방식으로 접근할 경우 동작한다.
- 권한 처리를 AccessDecisionManager에게 맡긴다.
- 사용자의 요청이 오면 인증객체가 있는지 확인한다.
- 인증 객체가 없으면 (null일경우) AuthenticationException을 발생
- SecurityMetadataSource 는 사용자가 요청한 자원에 필요한 권한을 조회해서 전달한다.
- 권한정보가 null일 경우에는 권한 심사를 하지 않고 자원 접근을 허용한다.
- 권한정보가 있으면 AccessDecisionManager라는 최종 심의 결정자가 있는데 AccessDecisionVoter 심의자에게 심의를 요청한다.
- 최종적으로 AccessDecisionVoter가 승인 또는 거부를 반환한다.
- 접근이 승인되면 자원에 대한 접근을 허용한다.
- 접근이 거부되면 AccessDeniedException을 발생
참고
728x90
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- maven
- Spring Security
- config-location
- LocalDateTime
- svn
- window
- JavaScript
- rocky
- k8s
- Github Status
- 북리뷰
- mybatis
- jQuery
- elasticsearch
- mybatis config
- Bash tab
- 오라클
- input
- Kotlin
- oracle
- Spring
- 베리 심플
- localtime
- LocalDate
- docker
- springboot
- intellij
- Linux
- Mac
- Java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함