티스토리 뷰

SMALL

spring에 oauth2로 google 연동 로그인을 구현하는 중에 발생한 오류이다.

clientregistrationrepository not found 오류는 application.yml이나 application.properties문제라고 파악되어서

꼼꼼히 살펴보았는데, 2시간 정도 찾지 못했다...

 

gradle에 oauth2와 관련된 코드가 잘 등록되어 있는지도 살펴보았고

application.properties에 아래 코드도 추가해보았다.

spring.profiles.active=oauth

 

 

나같은 경우 application.properties에 application.yml에 적어야할 암호들을 변수로 적어놓고 application.yml에 ${}로 연결해놓았는데, 그게 혼동되어 발생하는 문제인가 해서 application.properties를 없애기도 해보았다.

하지만 역시 문제가 아니라서 다시 원상태로 복귀해놓았다.

 

그러던 중, application.yml에서 oauth2 설정을 다른 설정보다 위로 올리라는 조언을 찾았다.

그래서 올렸는데, 그래도 오류는 같았다.

그러던 중 oauth2 앞에 security를 붙여주었더니 이제야 됐다.

해결 코드는 아래 코드와 같다.

앞에서 말했듯이, ${}값은 application.properties에 추가한 변수값이고, scope에 쓰인 http://www.... 는 google 연동 서비스에서 추가적으로 가져오고 싶은 사용자의 전화번호에 대한 정보이다.

spring:
    security:
        oauth2:
            client:
                registration:
                    google:
                        client-id: ${app.google.clientId}
                        client-secret: ${app.google.secret}
                        redirect-uri: ${app.google.redirect}
                        authorization-grant-type: authorization_code
                        scope:
                            - openid
                            - profile
                            - email
                            - https://www.googleapis.com/auth/user.phonenumbers.read
                provider:
                    google:
                        authorization-uri: https://accounts.google.com/o/oauth2/auth
                        token-uri: https://oauth2.googleapis.com/token
                        user-info-uri: https://www.googleapis.com/oauth2/v3/userinfo
                        user-name-attribute: sub
                        
                 .... 다른 설정들

 

반응형
LIST
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함