Oauth2 와 State

youngkyu MIn·2023년 12월 25일

아직 잘은 모르겠는데 State 라는 녀석을 만났다. 일단은 가볍게만 알아보고 넘어간다.

Oauth2 로그인 과정에서 State 의 역할이다.

1 CSRF 방지:

클라이언트(일반적으로 웹 애플리케이션)는 OAuth2 인증 요청을 시작할 때 유일한 STATE 값을 생성한다. 이 값은 사용자의 세션에 저장되어야 한다.

2 인증 요청:

사용자가 OAuth2 제공자(예: Google, Facebook)에 로그인 요청을 할 때, 애플리케이션은 이 STATE 값을 요청과 함께 보낸다.

3 인증 응답:

사용자가 성공적으로 로그인하고 OAuth2 제공자가 사용자를 애플리케이션으로 리디렉션 할 때, 제공자는 이전에 보낸 STATE 값을 응답에 포함시킨다.

4 검증:

애플리케이션이 이 STATE 값을 받으면, 처음 요청할 때 저장했던 값과 비교한다. 만약 값이 일치한다면, 요청이 유효하고 CSRF 공격이 아니라고 판단한다. 값이 일치하지 않으면 요청은 거부된다.


Java와 Spring Boot를 사용한 서버에서 OAuth2를 구현할 때, 이 STATE 값은 자동으로 생성되고 관리될 수 있다. Spring Security와 같은 보안 프레임워크는 이러한 과정을 대부분 자동으로 처리해준다.

아마 커스터마이징도 가능한 것 같다.

profile
한 줄 소개

0개의 댓글