해결된 질문
21.09.15 10:10 작성
·
166
0
답변 1
2
2021. 09. 16. 20:18
네
서버 입장에서 보면 인증은 현재 접속하는 사용자의 신원이 서버의 계정과 정확하게 일치하는지를 검증하는 단계이고 인가는 신원이 정확하게 검증되었다면 어느 정도의 레벨까지 서버의 자원을 사용할 수 있게 할 것인지 확인하는 단계라고 할 수 있습니다.
그렇기 때문에 서버의 접속에 있어 인증단계를 먼저 거치고 서버의 자원 접근에 있어 인가단계를 거친다고 할 수 있습니다. 물론 시스템의 규모나 정책에 따라서 이것이 정확하게 지켜지지 않는 상황이 올 수도 있습니다.
그러나 일반적으로 인증된 사용자에게 권한을 부여함으로써 자원을 효율적으로 관리할 수 있다고 봅니다.
그리고 익명 사용자는 인증에 실패한 사용자라기 보다는 인증 단계를 거치지 않고 서버의 자원에 접근하고자 하는 부류를 의미한다고 볼 수 있습니다.
결과론적으로는 인증에 실패한 자나 익명사용자나 동일한 레벨일 수는 있지만 스프링 시큐리티는 인증사용자와 익명사용자를 구분하기 위해서 익명사용자용 필터와 이름 그리고 권한까지 부여하고 있습니다.
그러나 이것은 오로지 인증사용자와 구분하기 위한 용도 및 보안 전반에 걸쳐 익명으로 접근하는 사용자일 경우 구조적인 분리를 위한 목적으로 설계했다고 보시면 될 것 같습니다.
예를 들어 인증을 받지 않은 사용자를 단순히 null 로 처리하기 보다는 AnonymousAuthenticaionToken 과 같은 방식으로 구조적 처리를 함으로써 인증 사용자이든 익명사용자이든 일관성, 통일성 있게 보안 관리를 하고 있다고 보시면 됩니다.