본문 바로가기
Springboot Study/Springboot Security

인증(Authentication)과 권한 부여(Authorization)

by xogns93 2024. 10. 28.

인증(Authentication)권한 부여(Authorization)는 보안 시스템에서 사용자나 시스템이 누구인지 확인하고, 무엇을 할 수 있는지 결정하는 데 중요한 역할을 하는 개념입니다.

 

1. 인증 (Authentication)

  • 정의: 인증은 사용자가 누구인지 확인하는 절차입니다. 쉽게 말해, 시스템에 접근하려는 사람이 "정말 그 사람인지"를 확인하는 과정입니다.
  • 사용 사례:
    • 로그인: 가장 흔한 인증 과정입니다. 사용자는 자신의 ID(사용자 이름)와 비밀번호를 입력하여 시스템이 본인이 맞는지 증명합니다.
    • 2단계 인증(2FA): 비밀번호 외에도 추가적인 보안 요소(예: 휴대전화로 전송된 코드나 생체 인식)를 활용하여 신원을 더욱 정확하게 확인합니다.
    • 싱글 사인온(SSO): 한 번의 인증으로 여러 애플리케이션이나 시스템에 접근할 수 있도록 하는 방법으로, 인증을 통합 관리하는 데 사용됩니다.
  • 주요 목표:
    • 신원 확인을 통해 시스템에 접근하려는 사용자가 허용된 사용자임을 확인합니다.
    • 이 과정에서 사용자가 누구인지 검증하는 것에 초점을 맞추며, 이 사용자에게 어떤 권한이 있는지는 확인하지 않습니다.

인증 절차 예시:

  1. 사용자가 로그인 페이지에서 ID와 비밀번호를 입력합니다.
  2. 서버는 사용자 데이터베이스에서 입력된 ID와 비밀번호가 맞는지 확인합니다.
  3. 인증이 성공하면, 사용자는 시스템에 접근할 수 있게 됩니다.

 

2. 권한 부여 (Authorization)

  • 정의: 권한 부여는 인증된 사용자가 특정 자원이나 기능에 접근할 수 있는지 결정하는 과정입니다. 즉, 인증을 통해 사용자의 신원이 확인된 후, 그 사용자가 접근할 수 있는 기능이나 자원을 제어하는 과정입니다.
  • 사용 사례:
    • 페이지 접근 제한: 사용자가 로그인한 후에도, 특정 페이지에 접근하려면 추가 권한이 필요할 수 있습니다(예: 관리자만 접근 가능한 페이지).
    • 기능 제한: 사용자는 로그인했지만, 해당 사용자가 데이터를 수정하거나 삭제할 수 있는 권한이 있는지는 권한 부여 과정을 통해 확인합니다.
    • 리소스 접근 제어: 데이터베이스에서 특정 테이블이나 열(column)에 접근할 수 있는지 확인하여, 필요한 권한이 없으면 접근을 차단합니다.
  • 주요 목표:
    • 접근 허용/거부: 사용자나 시스템이 특정 기능이나 데이터를 이용할 수 있는지를 결정합니다.
    • 권한 부여는 사용자가 이미 인증된 상태에서 수행되며, 인증된 사용자에 대해 접근 가능한 자원 및 범위를 설정하는 데 초점이 맞춰져 있습니다.

권한 부여 절차 예시:

  1. 사용자가 인증 후 시스템에 접근합니다.
  2. 사용자가 특정 기능(예: 파일 수정)을 요청합니다.
  3. 서버는 사용자 권한을 확인하여, 요청한 기능에 대한 권한이 있는지 판단합니다.
  4. 권한이 있으면 요청한 기능을 수행하고, 권한이 없으면 거부 메시지를 표시합니다.

 

3. 인증과 권한 부여의 관계 및 필요성

  • 인증이 완료된 후 권한 부여가 수행되는 이유:
    • 인증을 통해 사용자가 누구인지 먼저 확인해야, 해당 사용자가 어떤 권한을 가지고 있는지를 확인할 수 있기 때문입니다.
    • 이 과정은 시스템이 신뢰할 수 있는 사용자를 구분하여 부적절한 접근을 방지하고 보안을 강화하는 데 필수적입니다.
  • 실제 예시로 이해하기:
    • 은행 웹사이트: 사용자가 로그인(인증)을 통해 자신의 신원을 확인한 후, 해당 사용자가 접근할 수 있는 계좌나 서비스(권한 부여)에 맞게 화면이 표시됩니다.
    • 회사 내부 시스템: 직원은 자신의 계정으로 로그인하여 시스템에 접근할 수 있지만, 예를 들어 인사팀 직원과 일반 직원이 접근할 수 있는 정보와 기능이 다르게 설정됩니다. 인사팀은 직원 정보를 열람하거나 수정할 권한이 있지만, 일반 직원은 자신의 정보만 열람 가능하도록 권한이 제한됩니다.

요약

  1. 인증 (Authentication): 사용자 또는 시스템의 신원을 확인하는 과정입니다. "당신이 누구입니까?"라는 질문에 대한 답을 확인하는 단계입니다.
  2. 권한 부여 (Authorization): 인증된 사용자가 접근할 수 있는 자원과 권한을 결정하는 과정입니다. "당신이 무엇을 할 수 있습니까?"에 대한 답을 결정하는 단계입니다.

 

'Springboot Study > Springboot Security' 카테고리의 다른 글

Filter (FilterChain)  (0) 2024.10.31
Spring Security에서 중요한 인터페이스들  (0) 2024.10.30
스레드풀  (0) 2024.10.29
세션(Session)과 제이슨웹토큰(JSON Web Token)  (0) 2024.10.29
OAuth  (1) 2024.10.28