인가 코드 흐름 구현 경험과 보안 고려사항 서술
개인 프로젝트에서 OAuth 2.0 인가 코드 흐름을 직접 구현해본 경험이 있습니다. 외부 소셜 로그인을 붙이면서 토큰 교환 과정을 처음부터 만들어보았습니다.
인가 코드를 받아서 액세스 토큰으로 교환하는 서버 사이드 흐름을 구현했는데, 처음에는 state 파라미터 없이 구현했다가 CSRF 공격 가능성을 뒤늦게 인지하여 추가했습니다. 클라이언트가 요청할 때 생성한 state 값을 콜백에서 검증하는 방식으로 보완하였습니다. 실패는 보안 요소를 처음 설계에 포함시키지 않고 나중에 패치한 것이었는데, 인증 흐름은 설계 단계에서 공격 경로를 먼저 고려해야 한다는 것을 배웠습니다.
OAuth 2.0은 편리하지만, 토큰 저장 위치와 state 검증을 제대로 하지 않으면 보안 구멍이 생깁니다. 그 구멍을 직접 만들고 막아본 경험이 지금도 인증 코드를 볼 때 제일 먼저 체크하는 습관이 되었습니다.