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

kanghyojung님의 프로필 이미지

작성한 질문수

스프링 시큐리티 OAuth2

연동 구현(1)

서버간의 인증에 Oauth활용

24.06.19 23:10 작성

·

177

0

안녕하세요...!

클라이언트단에서 로그인을 통한 OAuth가 아닌 서버간의 통신에 인증을 위해 OAuth를 활용하고 싶은데

이때에는 그럼 WAS01(클라이언트1, 리소스서버1) , WAS02(리소스서버2) , 인가서버로 구성해서

  1. 클라이언트1이 인가서버로 토큰 요청

  2. 클라이언트1이 받은 access token을 셋팅해서 RestTemplate을 통해 WAS02의 특정 api 호출

  3. WAS02에서 클라이언트 자격 증명

  4. WAS01로 응답 제공

     

    => 이렇게 해야하는건가 구성을 생각하고 있는데, 한대의 서버에 클라이언트와 리소스서버를 같이두고 이렇게 구성하는게 맞는 방향일까요? 그리고 인가서버를 꼭 다른 포트로 띄워야하는지도 궁금합니다...!

     

     

     

답변 1

0

인프런 AI 인턴님의 프로필 이미지

2024. 06. 19. 23:16

안녕하세요, 인프런 AI 인턴입니다. kanghyojung님의 질문에 대해 서버 간 통신에서 OAuth 인증을 사용하는 방법에 대해 답변 드리고자 합니다.

서버 간 통신에서 OAuth를 사용하는 방식으로는 일반적으로 ‘Client Credentials Grant’ 유형이 사용됩니다. 이 방식은 클라이언트(서버)가 사용자 대신 자신을 인증하여 토큰을 요청하는 방식입니다. 주로 서버 간의 안전한 통신을 위해 사용되며, 클라이언트는 인가서버에 클라이언트 식별자와 비밀을 제공하여 액세스 토큰을 얻습니다.

  • 클라이언트1(WAS01)이 리소스서버2(WAS02)의 API를 안전하게 호출하기 위해 인가서버로부터 액세스 토큰을 요청합니다.
  • 요청받은 액세스 토큰은 클라이언트1이 WAS02의 API를 호출할 때 사용되며, WAS02는 이 토큰을 검증하여 클라이언트1의 요청을 인증합니다.

관련하여, 클라이언트와 리소스 서버를 동일한 서버에 위치시키는 것이 가능합니다. 이러한 구성은 특히 마이크로서비스 아키텍처에서 서비스 간의 통신을 안전하게 관리하기 위해 자주 사용됩니다. 하지만, 주의할 점은 인가 서버 자체가 분리된 역할을 하기 때문에 보안과 관리의 편의성을 위해 별도의 인스턴스나 포트에서 실행되는 것이 일반적입니다. 그러나, 작은 규모의 어플리케이션에서는 리소스 최적화를 위해 한 서버에서 여러 역할을 처리할 수도 있습니다.

인가 서버를 다른 포트로 띄울지 여부는 어플리케이션의 규모, 보안 요구 사항, 관리 편의성 등 여러 요소를 고려하여 결정해야 합니다. 대규모 시스템이나 엄격한 보안 요구 사항이 있는 경우, 인가 서버를 별도로 분리하여 운영하는 것이 바람직할 수 있습니다.

질문하신 내용과 유사한 상황에 대한 자세한 설명 및 구현 예시를 원하신다면, 아래에 제공된 링크를 참고하시기 바랍니다. “Resource Owner Password grant 방식 문의”에서 비슷한 상황에 대한 설명과 함께 Client Credentials Grant에 대한 언급이 있으며, 실제 사용 사례를 파악하는데 도움이 될 수 있습니다.

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