인증과 권한부여는 보안 시스템의 두 핵심 요소이다.
인증(Authentication)
- 인증은 사용자가 누구인지를 확인하는 과정이다.
- 일반적으로 사용자 이름과 비밀번호를 통해 이루어지지만, SMS, Email, 지문 또는 얼굴 인식 등 다양한 방법이 있다.
ex) 웹사이트에 로그인할 때, 사용자 이름과 비밀번호를 입력하여 자신을 인증하는 과정.
권한(Authorization)
- 권한 부여는 인증된 사용자가 수행할 수 있는 작업의 범위를 결정하는 과정이다.
- 사용자가 시스템 내에서 어떤 자원에 접근하거나 어떤 작업을 수행할 수 있는지 정의한다.
- 사용자의 역할이나 그룹을 기반으로 설정되며, 시스템이나 애플리케이션에 따라 다양한 권한 수준이 있을 수 있다.
ex) 인증된 사용자가 관리자인 경우, 웹사이트의 모든 섹션에 접근할 수 있지만, 일반 사용자인 경우 일부 섹션에만 접근할 수 있다.
인증과 권한 부여
인증 - > "이 사용자는 누구인가?" 사용자가 누구인지 확인.
권한 부여 -> "이 사용자는 무엇을 할 수 있는가?" 인증된 사용자가 할 수 있는 일을 결정.
인증은 권한 부여보다 먼저 이루어진다. 사용자가 누구인지 확인한 후, 그 사용자가 무엇을 할 수 있는지 결정한다. 권한 부여는 인증에 의존적이며 사용자가 먼저 인증되어야 그에 맞는 권한을 부여받을 수 있다.
JWT (JSON Web Tokens)
개념
- 인증을 위해 사용되는 토큰 기반 시스템
- 사용자가 로그인하면 서버가 사용자의 정보를 암호화해서 JSON 형식의 토큰을 생성하고 이를 사용자에게 제공. 이후 사용자가 요청 시 이 토큰을 서버에 전달하여 자신을 인증.
사용 예시
- REST API에서 클라이언트가 서버에 요청을 보낼 때 , HTTP 헤더에 JWT를 포함시켜 사용자 인증 정보 전송
인증과 권한 부여
- 사용자 인증 후 사용자의 신원을 나타내는데 사용. JWT가 사용자의 신원과 권한 정보를 담고 있어, 사용자가 추가 요청을 할 때 이를 서버에 제출함으로써 자신을 인증하고 권한을 증명.
Spring Security
개념
- Spring Security는 Java Spring 프레임워크의 일부로, 웹 애플리케이션의 보안을 관리하는 강력한 모듈.
- 인증과 권한부여를 쉽게 관리할 수 있도록 도와준다.
- 사용자의 요청이 들어올 때마다 이를 가로채서 사용자가 인증되었는지, 어떤 권한을 가지고 있는지를 확인한다.
사용 예시
- 웹 애플리케이션에서 로그인, 접근 권한 설정, URL별 보안 설정 등을 관리할 때 사용
인증과 권한 부여
- 사용자가 시스템에 접근할 때의 인증 과정을 처리. 사용자가 인증되면 사용자의 역할에 따라 수행할 수 있는 작업을 결정.
OAuth
개념
- 제3자 애플리케이션에게 사용자의 웹 서비스에 대한 접근 권한을 안전하게 위임하는 데 사용되는 표준 프로토콜이다.
- 사용자가 자신의 계정 정보를 직접 입력하지 않아도 되며, 서비스 제공자는 사용자의 데이터에 안전하게 접근 가능하다.
사용 예시
- 웹 사이트에서 Google 또는 Facebook을 통해 로그인하는 경우. 자신의 계정 정보를 공유하지 않고도 다른 서비스에 로그인 가능.
인증과 권한 부여
- 사용자가 제3자 서비스를 통해 자신의 신원을 증명하는 것이 인증 과정. 사용자가 제3자 서비스를 통해 자신의 신원을 증명 -> 애플리케이션이 사용자에게 특정 권한 부여.
JWT
: 주로 사용자 인증 후 사용자의 인증 정보를 저장하는 데 사용되는 토큰. 이를 통해 사용자가 누구인지 및 어떤 권한을 가지고 있는지 확인.
Spring Security
: 애플리케이션의 보안을 위한 전반적인 프레임워크. 인증과 권한 부여를 포함한 다양한 보안 기능 제공. 인증 절차와 함께, 사용자의 권한에 따라 시스템 내에서 할 수 있는 일을 제어.
OAuth
: 사용자가 자신의 정보를 안전하게 다른 애플리케이션에 제공할 수 있도록 하는 인증 프로토콜. 제3자 인증을 통해 사용자의 신원을 확인. 이를 기반으로 애플리케이션 내에서의 권한을 부여.