작성
·
662
0
18:50 분쯤에 localhost:8081 과 127.0.0.1:8081요청은 session이 다르게 형성되어서 문제가 생긴다. 말씀하셔서 코드를 보니
OAuth2LoginAuthenticationFilter#attempAuthentication 메소드에서 authorizationRequestRepository#removeAuthorizationRequest 를 호출해서 세션에 있는 OAuth2AuthorizationRequest를 꺼내고 지우던데
OAuth 2.0 Client() 강의에서 저장하는 이유가 state 비교 및 상태유지 라하셨는데
왜 굳이 세션에 저장된것을 지우는 과정이 필요한것인가요?
이미 해당 request(auth code를 요청하는) 에 대한 검증이 끝났기에 용량을 차지해서 지우는 것인가요...?
답변 1
1
OAuth2AuthorizationRequest 는 권한부여 요청할 때 마다 생성되는 객체입니다
그래서 1단계 임시코드를 요청할 때 OAuth2AuthorizationRequest를 사용하고 2단계 access token 을 요청한 이후에는 재사용할 만한 상황이 발생하지 않기 때문에 세션에서 지우고 있습니다
그래서 만약 토큰 만료가 되어 권한부여 요청을 다시 하는 경우 이전의 OAuth2AuthorizationRequest 가 세션에 존재한다면 해당 OAuth2AuthorizationRequest를 세션에서 가져다 사용할 수 있기 때문에 문제가 되는 것입니다
임시코드가 1회성인것처럼 OAuth2AuthorizationRequest 도 마찬가지라 보시면 됩니다