인프런 커뮤니티 질문&답변

aodofo님의 프로필 이미지
aodofo

작성한 질문수

스프링 시큐리티 OAuth2

OAuth2 로그인 구현 - Access Token 교환하기

Session id가 인가 코드와 access token을 교환하는 도중에 변경됩니다.

작성

·

940

0

안녕하세요. 강의 잘 듣고 있습니다.

제목에서처럼, session id가 access token을 교환하는 일련의 과정 중에 변경되어 다음과 같은 오류가 브라우저 상에서 보여집니다.

캡처.PNG

해당 에러 메시지를 내뱉는 로직이 OAuth2LoginAuthenticationFilter 클래스의 attemptAuthentication 메소드에 있음을 확인하였습니다. 제가 찾은 원인은 OAuth2AuthorizationRequestRedirectFilter에서 AuthorizationRequest의 저장까지는 성공적인데, OAuth2LoginAuthenticationFilter에서 AuthorizationRequest를 Repository에서 꺼내오려고 시도할 때 바뀐 session id값 때문에 이전의 AuthorizationRequest 객체를 가져오지 못하고 null을 반환하는 것이었습니다. 이렇게 session id가 바뀌는 원인이 무엇인지 알려주시면 감사하겠습니다 ㅠㅠ

답변 2

0

정수원님의 프로필 이미지
정수원
지식공유자

네 강의에서 설명하고 있지만 OAuth2AuthorizationRequestRedirectFilter 에서 처리하는 시점의 도메인 주소와 OAuth2LoginAuthenticationFilter 로 리다이렉트 하는 주소가 달라서 그렇습니다.

구체적으로 코드를 보지 못해서 정확한 도메인 정보를 말씀드릴 수는 없지만 세션 정보가 변경되는 원인은 도메인 주소가 다르기 때문에 나타나는 현상입니다.

현재 실행하고 있는 모든 과정에서 도메인 주소가 동일한지 아니면 중간에 다른 도메인으로 호출하거나 변경이 되는 부분이 있는지 체크하시기 바랍니다.

혹 코드 전체를 공유해 주시면 확인해 보도록 하겠습니다.

0

안녕하세요 aodofo 님, 인프런 AI 인턴이에요.
강의를 잘 듣고 있어주셔서 감사합니다.

Session id가 변경되는 원인으로는 보통 로그아웃 또는 세션이 만료되는 경우가 있습니다. 로그아웃이나 세션 만료 후에 새로운 세션 id가 발급되기 때문에, 이전의 세션 id로 생성된 인증 요청에서는 새로운 세션 id를 찾을 수 없게 됩니다. 이로 인해 OAuth2LoginAuthenticationFilter에서 AuthorizationRequest를 Repository에서 꺼내오지 못하고 null을 반환하는 현상이 발생합니다.

따라서, 세션 id가 변경되는 이유를 찾으시려면 소스 코드의 로그아웃 또는 세션이 만료되는 로직을 확인해보셔야 합니다. 또한, 세션 관리에 대한 설정이나 세션 시간 제한 등도 확인해보시는 것이 좋습니다. 이와 관련하여 해당 프레임워크 또는 라이브러리의 문서를 참고하거나, 커뮤니티에 질문을 올려서 자세한 도움을 받으실 수 있습니다.

불편을 드려 죄송합니다. 문제를 해결하기 위해 원인을 찾으시고, 세션 관리와 관련된 설정을 확인하시는 것을 추천드립니다. 고맙습니다!

aodofo님의 프로필 이미지
aodofo

작성한 질문수

질문하기