간단 기술 면접 질문 (2)

김준영·2023년 6월 8일
1

기술 면접

목록 보기
5/5

1. 인증과 인가의 차이

인증 : 사용자는 사용자와 시스템간에 공유되는 합의된 정보를 제공하여 자신의 신원을 증명하는 과정을 인증이라고 합니다.
인가 : 인증과 달리 인가는 어떤 개체가 어떤 리소스에 접근할 수 있는지 또는 어떤 동작을 수행할 수 있는지를 검증하는 것, 즉 접근 권한을 얻는 일을 말합니다.

2. 세션과 쿠키 그리고 토큰 인증 방식

세션(Session), 쿠키(Cookie) 및 토큰(Token)은 웹 애플리케이션에서 사용되는 인증 및 세션 관리를 위한 중요한 개념입니다.

  1. 세션

    세션은 웹 애플리케이션 서버와 클라이언트 간의 상태를 유지하기 위한 기술입이다.
    세션은 일시적으로 유지되며, 클라이언트가 서버에 접속하고 브라우저를 닫을 때까지 유지됩니다. 세션은 클라이언트를 식별하는데 사용되며, Session ID는 일반적으로 쿠키를 통해 클라이언트에게 전달되고, 서버는 이 Session ID를 사용하여 클라이언트의 세션 데이터를 저장하고 검색합니다.

  2. 쿠키

    쿠키는 클라이언트의 로컬 브라우저에 저장됩니다.쿠키는 클라이언트와 서버 간의 상태를 유지하고 추적하기 위해 사용됩니다. 서버는 클라이언트에게 쿠키를 전송하고, 클라이언트는 이 쿠키를 저장하고 나중에 요청 시 서버로 다시 전송합니다. 쿠키에는 이름, 값, 만료 날짜 및 도메인 정보 등이 포함될 수 있습니다. 쿠키는 주로 로그인 상태 유지, 개인화된 환경 설정 유지, 사용자 추적 등에 사용됩니다.

  3. 토큰 인증 방식

    토큰 인증 방식은 인증과 권한 부여를 위한 방법으로 많이 사용됩니다. 토큰은 클라이언트에게 발급되는 문자열로, 클라이언트는 이 토큰을 사용하여 인증된 요청을 서버에 전달합니다. 토큰은 일반적으로 JSON Web Token(JWT) 형식을 따르며, 토큰에는 클라이언트나 사용자에 대한 정보, 만료 날짜 및 서명 등이 포함될 수 있습니다. 클라이언트가 서버에 요청을 보낼 때마다 토큰을 함께 전송하고, 서버는 토큰의 유효성을 검사하여 요청을 인증합니다. 토큰 인증 방식은 세션 없이도 클라이언트의 상태를 유지하고 인증할 수 있으며, 분산 환경에서 확장성과 유연성을 제공합니다.

3. OAuth 2.0 워크플로우

(1) Resource Owner는 Client 역할을 하는 웹 애플리케이션에게 OAuth2 인증을 요청합니다.

여기에서 인증 요청은 Resource Owner가 인증을 할 수 있도록 Client인 웹 애플리케이션이 자체적으로 로그인 화면을 제공하는 것이 아닙니다.
⭐ Resource Owner는 자신의 계정 정보를 관리하고 있는 써드 파티 애플리케이션에 로그인하길 원하는 것이며, 이 요청을 Client인 웹 애플리케이션에 전송하는 것입니다.

(2) Client는 Resource Owner가 Resource Owner의 계정 정보를 관리하고 있는 써드 파티 애플리케이션에 로그인할 수 있도록 써드 파티 애플리케이션의 로그인 페이지로 리다이렉트(Redirect)합니다.

(3) Resource Owner는 로그인 인증을 진행하고 로그인 인증에 성공하면,

(4) ⭐ Authorization Server가 Resource Owner의 로그인 인증이 성공적으로 수행되었음을 증명하는 Access Token을 Client에게 전송합니다.
⭐⭐ Resource Owner에게 Access Token을 전송하는 것이 아니라 Client 애플리케이션에게 전송하는 것이라는 걸 꼭 기억하세요. Client는 Resource Owner를 대신해서 Resource Owner의 Resource를 사용하는 대리인 역할을 하기 때문입니다. ^^

(5) Access Token을 전달받은 Client는 이제 Resource Owner의 대리인 역할을 수행할 수 있게 되었으므로, Resource Server에게 Resource Owner 소유의 Resource를 요청합니다.

(6) Resource Server는 Client가 전송한 Access Token을 검증해서 Client가 Resource Owner의 대리인으로서의 자격이 증명되면 Resource Owner의 Resource를 Client에게 전송합니다.

4. CI/CD란? 차이점

CI/CD는 지속적인 통합, 배포를 의미합니다.

CI

개발자들이 작업한 코드를 공유 저장소에 지속적으로 통합하는 접근 방식을 의미합니다. CI는 개발자들이 작업한 코드를 자동으로 빌드, 테스트하고, 자동화된 테스트 결과를 확인하여 문제를 식별하는 과정을 포함하여 팀 내에 코드 품질을 유지하고 개발자들 간의 협업을 원활하게 합니다.

CD

CI의 확장 개념으로, 개발된 소프트웨어를 자동으로 배포하는 과정을 포함합니다.
CD는 CI에서 빌드 및 테스트한 소프트웨어를 자동으로 스테이징 및 프로덕션 환경으로 배포하며, 이를 통해 소프트웨어의 지속적인 업데이트와 배포가 가능합니다.

CI는 개발자들이 작업한 코드를 통합하고 품질을 유지하는 과정을 의미하며, CD는 CI의 확장으로 개발된 소프트웨어를 자동으로 배포하는 과정을 포함합니다.

profile
ㅎㅎ

0개의 댓글