Q. DTO에 대한 설명과 함께 왜(?) Entity 인스턴스를 Client에 그대로 전달하면 안되는지에 대해 설명해주세요.
Data Transfer Object는 계층 간의 데이터 교환을 위해 필요한 객체이다. 특히 클라이언트와 서버 간의 데이터 전송에 사용된다.
필요한 정보만을 DTO에 담아 최소한의 데이터 전송으로 필요한 작업을 수행할 수 있도록 도와줍니다.
보안 유지 : 엔티티에 민감한 정보가 포함되어 있을 수 있습니다. 때문에 DTO를 사용하여 클라이언트에 전달할 데이터를 필터링하여 보안을 유지할 수 있습니다.
응집도 향상 : DTO에 필요한 정보만을 담기 때문에 애플리케이션의 응집도를 향상시킵니다.
유연성 : 객체의 구조가 변경되더라도 DTO를 통해 데이터를 전송하면 클라이언트에 덜 영향을 줄 수 있기 때문에 유지보수성을 향상 시킬 수 있습니다.
Q. JPA의 연관관계와 외래키에 대해서 설명해주세요.
JPA의 연관관계는 논리적인 의미를 가진 객체들간의 연결을 의미합니다. 데이터베이스의 테이블간의 관계를 객체지향적으로 표현한 것입니다.
외래키란? 데이터베이스의 테이블간의 관계를 표현하기 위해 대상 테이블의 기본키를 다른 테이블에서 참조하기 위해서 가지고 있는 키입니다.
데이터베이스에서 한 테이블의 행이 다른 테이블의 행을 참조할 때 사용되는 키입니다.
Q. 인증과 인가에 대해서 설명해주세요.
인증(Authentication)
인증은 해당 유저가 여러 수단을 통해 실제 유저인지 인증하는 개념입니다.
최근에는 보안 강화를 위해 2단계 인증(2FA)나 다단계 인증(MFA) 같은 방법을 사용합니다.
인가(Authorization)
인가는 해당 유저가 특정 리소스에 접근이 가능한지 허가를 확인하는 개념입니다.
역할 기반 접근 제어, 속성 기반 접근 제어 등과 같은 정책을 사용하여 구현합니다.
7-1. 본인의 프로젝트의 인증 인가에 대해서 어떻게 구현했는지를 중심으로 설명해주세요.
뉴스피드 프로젝트에서 인증 인가 구현을 JWT 토큰을 사용하여 구현하였습니다. 인증 기능은 사용자가 로그인을 시도할 경우 UserPassword 필터를 통해 인증 객체를 SecurityContextHolder에 담아 DB에서 해당 객체의 존재유무를 확인하고 있을 경우 JWT 토큰을 생성하여 응답 헤더에 반환하도록 구현하였습니다. 인가 기능은 사용자가 SessionID를 사용해 권한이 필요한 리소스에 접근할 경우, Authorization 필터를 사용해 헤더를 검증 후 토큰을 검증하도록 구현하였습니다.
Q. 뷰를 반환하는 api에서 다음 요청에 인증요건을 갖추는 부분을 어떻게 구현하셨는지 자세히 알려주세요.
Spring Security를 사용하여 Config 클래스에서 authorizeHttpRequests.requestMatchers().hasRole() 메서드를 사용하여 권한에 따른 뷰 api 접근 처리를 구현하였습니다.
'CS' 카테고리의 다른 글
[항해 취업코스] 개발자 취준 기록 13일차 (0) | 2024.03.26 |
---|---|
[항해 취업코스] 개발자 취준 기록 12일차 (0) | 2024.03.22 |
[항해 취업코스] 개발자 취준 기록 10일차 (0) | 2024.03.21 |
[항해 취업코스] 개발자 취준 기록 9일차 (0) | 2024.03.20 |
모의 면접 회고 (0) | 2024.03.14 |