• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

인증, 인가에 대해서

21.09.15 10:10 작성 조회수 98

0

강의 잘 듣고 있습니다.
인증, 인가에 대해 살짝 애매한 부분이 있어 질문 드립니다.
 
지금까지 제가 이해한 바로는 "인증"이라는 것은 결과가 boolean 인 것 같습니다. 인증에 성공했거나 실패했거나 둘 중 하나로 결정할 수 있습니다.
 
"인가"는 권한과 유사한 의미(?)이며, 커스터마이징이 가능하다. 예를 들어 USER, SYS, ADMIN 과 같이 얼마든지 추가하고 수정할 수 있다.
 
익명 인증에 대해서도 언급하셨는데, 익명 인증이라는 것이 존재하니, 인증에 실패했다는 경우는 존재하지 않는 것 아닐까요? 인증을 시도했다가 실패할 수는 있으나 어쨌든 결론적으로 익명 인증이라는 것을 default로 가지고 있으니까요.
 
음, 질문이 모호한 것 같은데 간단하게나마 알려주시면 감사하겠습니다. 쉽지 않네요,....

답변 1

답변을 작성해보세요.

2

정수원님의 프로필

정수원

지식공유자

21.09.16 20:18

서버 입장에서 보면 인증은 현재 접속하는 사용자의 신원이 서버의 계정과 정확하게 일치하는지를 검증하는 단계이고 인가는 신원이 정확하게 검증되었다면 어느 정도의 레벨까지 서버의 자원을 사용할 수 있게 할 것인지 확인하는 단계라고 할 수 있습니다. 

그렇기 때문에 서버의 접속에 있어 인증단계를 먼저 거치고 서버의 자원 접근에 있어 인가단계를 거친다고 할 수 있습니다. 물론 시스템의 규모나 정책에 따라서 이것이 정확하게 지켜지지 않는 상황이 올 수도 있습니다.

그러나 일반적으로 인증된 사용자에게 권한을 부여함으로써 자원을 효율적으로 관리할 수 있다고 봅니다.

그리고 익명 사용자는 인증에 실패한 사용자라기 보다는 인증 단계를 거치지 않고 서버의 자원에 접근하고자 하는 부류를 의미한다고 볼 수 있습니다.

결과론적으로는 인증에 실패한 자나 익명사용자나 동일한 레벨일 수는 있지만 스프링 시큐리티는 인증사용자와 익명사용자를 구분하기 위해서 익명사용자용 필터와 이름 그리고 권한까지 부여하고 있습니다.

그러나 이것은 오로지 인증사용자와 구분하기 위한 용도 및 보안 전반에 걸쳐 익명으로 접근하는 사용자일 경우 구조적인 분리를 위한 목적으로 설계했다고 보시면 될 것 같습니다.

예를 들어 인증을 받지 않은 사용자를 단순히 null 로 처리하기 보다는 AnonymousAuthenticaionToken 과 같은 방식으로 구조적 처리를 함으로써 인증 사용자이든 익명사용자이든 일관성, 통일성 있게 보안 관리를 하고 있다고 보시면  됩니다.