인증 및 세션 관리
OAuth2/OIDC, PKCE, refresh token, 보안 세션 저장, webview vs in-app browser, 생체 인증
1모바일 인증의 맥락에서 OAuth2란 무엇입니까?
모바일 인증의 맥락에서 OAuth2란 무엇입니까?
답변
OAuth2는 모바일 애플리케이션이 자격 증명을 노출하지 않고도 사용자 리소스에 접근할 수 있게 해주는 업계 표준 인가 프로토콜입니다. access token을 발급하는 인가 서버에 인증을 위임하는 방식으로 작동합니다. 애플리케이션이 비밀번호를 처리하는 직접 인증과 달리, OAuth2는 사용자가 서드파티 제공자(Google, Apple 등)를 통해 안전하게 인증할 수 있도록 합니다.
2OAuth2와 OpenID Connect (OIDC)의 주요 차이점은 무엇입니까?
OAuth2와 OpenID Connect (OIDC)의 주요 차이점은 무엇입니까?
답변
OAuth2는 리소스에 대한 접근 권한을 얻을 수 있게 해주는 인가 프로토콜인 반면, OIDC는 OAuth2 위에 구축되어 인증을 추가하는 신원(identity) 계층입니다. OIDC는 사용자 신원에 관한 정보(claims)를 JWT 형식으로 담은 ID token을 도입하여, 애플리케이션이 사용자가 특정 리소스에 접근할 수 있다는 사실뿐만 아니라 그 사용자가 누구인지도 알 수 있도록 합니다.
3PKCE (Proof Key for Code Exchange)란 무엇이며 모바일 애플리케이션에 왜 필수적입니까?
PKCE (Proof Key for Code Exchange)란 무엇이며 모바일 애플리케이션에 왜 필수적입니까?
답변
PKCE는 인가 코드 가로채기 공격으로부터 보호하는 OAuth2 보안 확장입니다. 클라이언트 측에서 무작위 code_verifier를 생성하고, 이로부터 code_challenge를 도출하여 인가 요청 시 전송하는 방식으로 동작합니다. 코드를 토큰으로 교환할 때 원래의 code_verifier가 전송되고 서버에서 검증됩니다. 모바일 앱은 client_secret을 기밀로 유지할 수 없기 때문에 이는 매우 중요합니다.
React Native 모바일 애플리케이션에는 어떤 OAuth2 flow가 권장됩니까?
access token과 refresh token의 차이점은 무엇인가요?
+19 면접 질문