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

에욱님의 프로필 이미지
에욱

작성한 질문수

스프링 시큐리티 OAuth2

Spring Authorization Server - 인가서버 시작하기

code 를 accessToken 으로 교환시 질문입니다.

작성

·

43

0

인가서버로부터 code 발급받고 이 코드를 accessToken으로 교환하기 위해 서버에 요청할때 이 순간은 인증을 못받은 상태 아닌가요? accessToken을 발급받아야 클라이언트가 인증을 받은거고 그리고 이때도 클라이언트가 인증을 받아서 authorizedClient 객체가 생기는거지 인증객체가 생기는건 아닐텐데 강의 37분30초쯤에는 code를 accessToken으로 바꿔달라는 요청할때 왜 인증객체가 생성돼있나요? authorization server api를 사용했기때문에 마지막에 위치한 인가서버 필터에 도달하기 위해 다르게 처리되는건가요?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

에욱님, 스프링 시큐리티 OAuth2 강의를 수강하시다 발생한 질문에 대해 답변 드리겠습니다.

OAuth2 인증 과정에 대해 궁금증이 있으신 것 같습니다. 기본적으로, 클라이언트가 인가 코드(Authorization Code)를 발급받은 후, 이를 인가 서버에 전송하여 액세스 토큰(Access Token)으로 교환하는 과정을 거치게 됩니다. 이 과정에서 몇 가지 중요한 개념들이 있습니다:

  1. 인가 코드 발급: 클라이언트가 인가 코드(Authorization Code)를 받으면 아직 인증된 상태는 아닙니다. 이 시점에서는 단지 인가 서버에 의해 인증 후 발급된 코드만 가진 상태입니다.

  2. 액세스 토큰 요청: 클라이언트는 이 인가 코드를 사용하여 인가 서버에 액세스 토큰을 요청합니다. 이때 클라이언트는 액세스 토큰을 받기 전까지는 완전한 인증 상태가 아닙니다. 액세스 토큰을 통해 리소스 서버에 접근할 수 있는 권한이 부여됩니다.

  3. AuthorizedClient 객체: 스프링 시큐리티에서는 클라이언트가 이러한 프로세스를 통해 인증을 완료하고 액세스 토큰을 받았을 때, authorizedClient 객체가 생성됩니다. 이 객체는 클라이언트와 이를 통해 인증된 사용자의 정보 및 액세스 토큰을 포함합니다.

강의에서 언급한 대로, 인가 코드 교환 시점에 인증 객체가 생성되는 것에 대해 질문 주셨습니다. 기본적으로, 스프링 시큐리티는 OAuth2 인증의 각 단계에서 내부적으로 인증 객체를 유지 및 관리합니다. 따라서 인가 서버와의 상호작용 및 스프링 시큐리티의 설정에 따라 코드가 교환되는 순간에 필요한 인증 객체가 생성될 수 있습니다.

관련하여 Spring Security OAuth2 로그인 인증 흐름이 잘 설명되어 있는 공식 문서를 참고하시어 복잡할 수 있는 인증 흐름을 보다 자세히 이해하시기를 추천드립니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

에욱님의 프로필 이미지
에욱

작성한 질문수

질문하기