1. 권한 부여
1) 개념
식별된 클라이언트가 요청된 리소스에 엑세스할 권한이 있는지 시스템이 결정하는 프로세스
2) 특징
- 인증 흐름을 완료한 후 요청을 권한 부여 필터에 위임하고, 필터는 구성된 권한 부여 규칙에 따라 요청을 허용하거나 거부함. 즉, 항상 인증 이후에 수행됨
- 인증 프로세스 도중 UserDetailsService는 사용자의 권한을 포함한 모든 세부 정보를 얻음. 애플리케이션은 사용자를 성공적으로 인증한 후 GrantedAuthority 인터페이스로 나타내는 권한으로 권한 부여를 수행함
3) 과정
2. GrantedAuthority
1) 개념
사용자가 수행할 수 있는 작업을 GrantedAuthority 인터페이스로 나타냄
2) 특징
UserDetails는 GrantedAuthority 인스턴스의 컬렉션을 가짐
GrantedAuthority 객체의 getAuthority() 메서드의 실행으로 권한의 이름을 얻을 수 있음
3) 인터페이스 코드
public interface GrantedAuthority extends Serializable{
String getAuthority();
}
3. 권한에 따른 접근 제한 방법
1) hasAuthority()
- 하나의 권한만 매개 변수로 받음
- 해당 권한이 있는 사용자만 엔드포인트를 호출할 수 있음
2) hasAnyAuthority()
- 여러 개의 권한을 매개 변수로 받음
- 여러 개 권한 중 하나의 권한만 있더라도 사용자는 엔드포인트를 호출할 수 있음
3) access()
- 권한 부여 조건을 나타내는 스프링 식을 매개 변수로 받음
- 코드를 읽고 디버그하기 어려움
- 위의 두 메서드 사용이 불가한 경우에만 사용하는 것이 바람직함
4. 역할에 따른 접근 제한 방법
1) hasRole()
- 하나의 역할만 매개 변수로 받음
- 해당 역할의 사용자만 엔드포인트를 호출할 수 있음
2) hasAnyRole()
- 여러 개의 역할을 매개 변수로 받음
- 여러 개 중 하나만 가지고 있어도 사용자는 엔드포인트를 호출할 수 있음
3) access()
- 역할 부여 조건을 나타내는 스프링 식을 매개 변수로 받음
- 코드를 읽고 디버그하기 어려움
- 위의 두 메서드 사용이 불가한 경우에만 사용하는 것이 바람직함
5. 맞춤형 권한 부여
1) 개념
비즈니스 요구 사항에 따라 특정한 요청 그룹에만 권한 부여 제약 조건을 적용하는 것
2) 특징
권한 부여 구성을 적용할 요청을 선택할 때 선택기 메서드를 사용함
3) 선택기 메서드
권한 부여 구성을 적용할 요청을 선택할 때 사용하는 메서드
6. 선택기 메서드 중 MVC 선택기
1) 특징
- 권한 부여 구성을 적용할 요청을 지정하는 일반적인 방법
- 표준 MVC 구문으로 경로를 지정
- /hello 와 /hello/를 동일하게 인식해서 같은 규칙으로 보호해서 스프링의 경로 및 작업 매핑과 관련한 몇 가지 위험을 예방할 수 있음
2) 메서드
mvcMatchers(HttpMethod method, String... patterns)
- 제한을 적용할 HTTP 방식과 경로를 모두 지정
- 같은 경로에 대해 HTTP 방식별로 다른 제한을 적용할 때 유용
mvcMatchers(String... patterns)
- 경로만을 기준으로 권한 부여 제한을 적용할 때 쉽고 간단하게 이용 가능
- 자동으로 해당 경로의 모든 HTTP 방식에 제한이 적용됨
3) MVC 선택기 경로 일치에 이용되는 일반적인 식
식 | 설명 |
/a | /a 경로만 |
/a/* | 한 경로 이름만 대체함. /a/b는 일치하지만 /a/b/c는 일치하지 않음 |
/a/** | 여러 경로 이름을 대체함. /a, /a/b, /a/b/c 모두 일치 |
/a/{param} | 주어진 경로 매개 변수를 포함한 /a 경로에 적용 |
/a/{param:regex} | 매개 변수 값과 주어진 정규식이 일치할 때만 주어진 경로 매개 변수를 포함한 /a 경로에 적용됨 |
7. 선택기 메서드 중 앤트 선택기
1) 특징
- /hello 와 /hello/를 동일하게 인식하지 않아서 권한 부여 규칙을 적용할 모든 경로에 확실하게 적용되게 식을 작성해야 함
- 되도록이면 mvc 선택기를 사용하는 것이 좋음
2) 메서드
antMatchers(HttpMethod method, String patterns)
- 제한을 적용할 HTTP 방식과 경로를 참조할 앤트 패턴을 모두 지정할 수 있음
- 같은 경로 그룹에 대해 HTTP 방식별로 다른 제한을 적용할 때 유용
antMatchers(String patterns)
- 경로만을 기준으로 권한 부여 제한을 적용할 때 더 쉽고 간단하게 이용할 수 있음
- 모든 HTTP 방식에 자동으로 제한이 적용
antMatchers(HttpMethod method)
- 경로와 관계없이 특정 HTTP 방식을 지정
8. 선택기 메서드 중 정규식
1) 특징
앤트와 MVC 식으로는 해결할 수 없는 특정한 요구사항(특정한 기호나 문자 있으면 요청 거부)에 종종 사용
2) 메서드
regesMatchers(HttpMethod method, String reges)
- 제한을 적용할 HTTP 방식과 경로를 참조할 정규식을 모두 지정
- 같은 경로 그룹에 대해 HTTP 방식별로 다른 제한을 적용할 때 유용
regexMatchers(String regex)
- 경로만을 기준으로 권한 부여 제한을 적용할 때 더 쉽고 간단하게 이용할 수 있음
- 모든 HTTP 방식에 자동으로 제한이 적용
'Spring > security' 카테고리의 다른 글
[시큐리티] CSRF (0) | 2023.03.27 |
---|---|
[시큐리티] 필터 (0) | 2023.03.23 |
[시큐리티] SecurityContext (0) | 2023.03.16 |
[시큐리티] AuthenticationProvider (0) | 2023.03.15 |
[시큐리티] PasswordEncoder (0) | 2023.03.15 |