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

김병관님의 프로필 이미지
김병관

작성한 질문수

스프링 시큐리티 OAuth2

클라이언트 앱 시작하기 - application.yml/ OAuth2ClientProperties

http://localhost:8081 접속 에러가 뜹니다.

작성

·

1K

·

수정됨

0

또한 keycloak 19.0.1 버전은 사용시 실행이 되지않아

22.0.5 버전을 사용하고 있습니다.

issuerUri 는 사용시 스프링부트 실행자체가 되지 않아 막아두었습니다.

주석처리를 해제하면 다음과 같은 에러가 뜹니다.

Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.security.config.annotation.web.configuration.OAuth2ClientConfiguration$OAuth2ClientWebMvcSecurityConfiguration': Unsatisfied dependency expressed through method 'setClientRegistrationRepository' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'clientRegistrationRepository' defined in class path resource [org/springframework/boot/autoconfigure/security/oauth2/client/servlet/OAuth2ClientRegistrationRepositoryConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.security.oauth2.client.registration.InMemoryClientRegistrationRepository]: Factory method 'clientRegistrationRepository' threw exception; nested exception is java.lang.IllegalArgumentException: Unable to resolve Configuration with the provided Issuer of "http://localhost:8080/realms/oauth2"

 

답변 2

0

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

주석 처리를 해제한다는 의미가 issuerUri 를 사용한다는 것일까요?

issuerUri 는 어플리케이션이 실행되면 해당 주소로 인가서버의 메타 정보를 가지고 오는 역할을 하는데 issuerUri 에서 오류가 나게 되어 setClientRegistrationRepository 의 파라미터가 전달이 안되어 빈을 생성하지 못하는 오류가 난 것 같습니다.

setClientRegistrationRepository 에 ClientRegistrationRepository 객체는 필수적으로 생성되어 저장이 되어야 하는데 그렇지 못한 상황인 것 같습니다.

아니면 issuerUri 를 사용하지 않는 상태에서 위와 같은 오류가 발생한다는 것인가요?

소스를 공유해 주시면 제가 테스트 해 봐야 알 것 같습니다.

0

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

이미지와 함께 설명해주신 내용을 바탕으로 문제가 발생하는 부분들을 살펴보겠습니다.

첫 번째 이미지에서 “invalid_token_response” 오류는 OAuth 2.0 액세스 토큰 응답을 검색하는 동안 401 Unauthorized 오류가 발생했다는 것을 나타냅니다. 이는 보통 인증 정보가 잘못되었거나 누락되었을 때 발생합니다. 지금 상태에서는 클라이언트 앱 설정의 문제일 가능성이 높습니다.

두 번째 이미지는 OAuth 2.0 클라이언트 애플리케이션의 설정 화면이며, 클라이언트 ID와 비밀번호 (Client Id and Secret)를 사용하여 API에 안전하게 접근할 수 있는 설정임을 보여줍니다. 여기에서 보이는 클라이언트 비밀번호는 실제로 사용되는 비밀번호일 경우 보안 문제가 될 수 있으므로 신중히 다루어야 합니다.

세 번째 이미지는 리디렉션 URI 설정 화면을 보여주고 있습니다. “http://localhost:8081” 및 “http://localhost:8081/login/oauth2/code/keycloak”과 같은 유효한 리디렉션 URI가 포함되어 있어야 합니다. 이 설정은 인증 과정 후 사용자가 리디렉션될 URI를 지정하는데 사용됩니다.

네 번째 이미지는 Spring Boot 애플리케이션의 보안 설정과 관련된 설정 파일을 보여주고 있습니다. 여기에 정의된 클라이언트 비밀번호와 리디렉션 URI, 그리고 기타 OAuth 관련 설정들이 포함되어 있습니다. 이 설정들은 Keycloak과 같은 OAuth 2.0 프로바이더와의 통합에 사용됩니다.

마지막으로, issuerUri 설정에 문제가 있어 스프링부트 실행 자체가 되지 않는다는 내용과 관련된 오류 이미지를 보여주고 있습니다. issuerUri는 OAuth 2.0 프로바이더가 제공하는 발행자 식별자를 지정하는데 사용되며, 여기서는 “http://localhost:8080/realms/oauth2”로 지정되었는데, Spring Security 설정에서 이를 올바르게 해석하지 못하고 있는 것으로 보입니다.

오류 메시지와 설정을 종합해볼 때, 다음과 같은 조치들을 살펴볼 수 있습니다:

  1. 클라이언트 애플리케이션 설정에서 클라이언트 ID와 클라이언트 비밀번호가 올바르게 입력되었는지 확인하세요.
  2. 리디렉션 URI가 올바르게 등록되었는지 확인하고, 설정 파일과 클라이언트 애플리케이션의 설정이 일치하는지 확인하세요.
  3. issuerUri가 올바르게 지정되었는지 확인하고, 필요하다면 OAuth 2.0 프로바이더의 설정을 검토하세요.
  4. OAuth 2.0 프로바이더에서 발행하는 JWT의 서명에 사용되는 공개키가 올바르게 설정되었는지 확인하세요.

이러한 설정들이 올바르게 적용되어 있지 않으면, 위와 같은 인증 오류가 발생할 수 있습니다. 설정이 올바른지 다시 한 번 확인해보시고, 그래도 문제가 해결되지 않으면 추가적인 로그나 설정 파일을 통해 문제를 좀 더 상세히 진단해볼 필요가 있습니다.

김병관님의 프로필 이미지
김병관

작성한 질문수

질문하기