charlatan
4k
2021-04-10 17:14:58 작성 2021-04-10 17:20:18 수정됨
3
1557

스프링 부트 Security+OAuth2+JWT 예제


스프링 부트, 스프링 시큐리티, OAuth2를 기반으로 JWT 로그인을 구현한 예제입니다. 관련된 자료들이 많지만 deprecated 된 것들이 혼재되어 있어서 가능하면 단순하게 정리하려고 했습니다. 

구글과 네이버 두 개 정도만 적용되어 있습니다. 다른 기능은 하나도 없고 단지 로그인 기능만 있습니다. OAuth2의 접근토큰은 리소스 서버로부터 사용자 정보 취득 후 JWT를 만드는 데에만 사용하고 인증 처리는 JWT만으로만 합니다.

스프링 부트 스타터를 거의 사용했고 프론트엔드는 간단하게 react.js로 만들었습니다. 

▪ 백엔드(스프링 부트)

https://github.com/boyd-dev/SimpleSpringBoot.git

▪ 프론트엔드(react.js)

https://github.com/boyd-dev/SimpleReactApp.git

프론트엔드는 스프링 부트 프로젝트를 빌드하면 같이 빌드되어 스프링 부트 정적 리소스 위치로 복사하도록 했으므로 그냥 localhost:8080으로 접속해서 보면 되겠습니다.



8
  • 댓글 3

  • 띠모기
    79
    2021-05-17 11:51:44

    안녕하세요 만들어 놓으신 예제 실행해보려고 하는데 이런 에러가 뜨네요

    11:43:07.612 [main] ERROR org.springframework.boot.web.embedded.tomcat.TomcatStarter - Error starting Tomcat context. Exception: org.springframework.beans.factory.UnsatisfiedDependencyException. Message: Error creating bean with name 'mySecurityConfig': Unsatisfied dependency expressed through method 'setContentNegotationStrategy' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration': Unsatisfied dependency expressed through method 'setConfigurers' parameter 0; nested exception is 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: redirectUri cannot be empty


    검색해보니 어떤 요소가 부족해서 빈 생성을 못하는거 같은데 해결법을 구할 수 있을까요?

  • charlatan
    4k
    2021-05-17 17:50:56

    방금 레포를 받아서 돌려보니 문제가 없습니다.

    redirectUri cannot be empty 이것이 원인이 아닐까요?



  • 하루히즘
    723
    2021-05-24 16:34:05

    큰 도움이 될 것 같습니다 감사합니다~

  • 로그인을 하시면 댓글을 등록할 수 있습니다.