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

김동연님의 프로필 이미지

작성한 질문수

스프링 시큐리티 OAuth2

무한리디렉션 궁금증

23.01.30 21:35 작성

·

839

0

안녕하세요 선생님 강의 잘듣고 있습니다

 

오늘 처음으로 spring 시큐리티와 keycloak 와 사용해서 간단한 RestController 을 만들어서 keycloak 로 로그인하는 강의를 들었는데

 

궁금점이 생겼습니다

 

applition.yml redirect 구성하실때

http://localhost:8081/login/oauth2/code/keycloak

이 주소가 시큐리티 ouath2 로그인 고유 주소인가요?

 

제가 테스트한다고 oauth2 에 다른 문자열을 넣고 돌리면 리디렉션이 너무 많다고 크롬 , 엣지에서 오류가 발생합니다

ex1) clientId - OAuth2-client-app

redirectUri=http://localhost:8081/login/oauth2/code/keycloak

ex2)clientId - OAuth2-client-app

redirectUri=http://localhost:8081/login/OAuth2-client-app/code/keycloak

 

이렇게 비교를 해보았는데

1번은 로그인이 잘되고 2번은 계속 무한 리디렉션이 나옵니다

 

그래서 ex1) 번을 크롬 개발자 도구로 쫒아 가보니

1) http://localhost:8081/oauth2/authorization/keycloak

status :302

Location: http://localhost:8080/realms/spring-security-OAuth2/protocol/openid-connect/auth?response_type=code&client_id=OAuth2-client-app&scope=openid%20email%20profile&state=wNz-VZFRvu_Nr8KUFYjRshELNLOFbUZVO9vWdcEQrs4%3D&redirect_uri=http://localhost:8081/login/oauth2/code/keycloak&nonce=ehS4VAjQJBrDf7APtHtUbWuzwdOnCJAOd8BhRhSohoU

 

2) http://localhost:8080/realms/spring-security-OAuth2/protocol/openid-connect/auth?response_type=code&client_id=OAuth2-client-app&scope=openid%20email%20profile&state=wNz-VZFRvu_Nr8KUFYjRshELNLOFbUZVO9vWdcEQrs4%3D&redirect_uri=http://localhost:8081/login/oauth2/code/keycloak&nonce=ehS4VAjQJBrDf7APtHtUbWuzwdOnCJAOd8BhRhSohoU

status : 302

Location: http://localhost:8081/login/oauth2/code/keycloak?state=wNz-VZFRvu_Nr8KUFYjRshELNLOFbUZVO9vWdcEQrs4%3D&session_state=0e8d5564-fa24-4521-9bd9-bd931d42beb7&code=58d084f3-272e-4e31-ad4d-edc808fde122.0e8d5564-fa24-4521-9bd9-bd931d42beb7.e3344d0f-ca0d-44fd-8993-08b7b90ca190

 

3) http://localhost:8081/login/oauth2/code/keycloak?state=wNz-VZFRvu_Nr8KUFYjRshELNLOFbUZVO9vWdcEQrs4%3D&session_state=0e8d5564-fa24-4521-9bd9-bd931d42beb7&code=58d084f3-272e-4e31-ad4d-edc808fde122.0e8d5564-fa24-4521-9bd9-bd931d42beb7.e3344d0f-ca0d-44fd-8993-08b7b90ca190

status : 302

Location: http://localhost:8081/

 

스프링 시큐리티 안에서 oauth2 가 가지는

고유의 엔드포인트 라고 생각을 해야 하는게 맞는거겠죠?

 

무한리디렉션이 생기는 이유는 솔직히 모르겠습니다 아마 로그인 권한은 획득했는데..

그 이후는 잘 모르겠습니다.

 

답변 1

0

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

2023. 01. 31. 15:52

http://localhost:8081/login/oauth2/code/keycloak 에서

login/oauth2/code/* 가 기본적으로 설정되어 있는 리다이렉트 uri 입니다.

물론 이 값은 별도의 설정을 통해 변경이 가능합니다.

만약 위의 값을 설정 없이 임의로 변경하게 되면 리다이렉트 기능이 제대로 동작하지 않고 변경된 주소에 대해 접속 권한이 주어 지지 않았을 경우 계속해서 클라이언트와 인가서버간 무한 요청과 리다이렉트가 반복이 될 수 있습니다.

login/oauth2/code/* 를 변경하는 방법은 강의 챕터 중

섹션 7. OAuth 2.0 Client - oauth2Login()

> API 커스텀 구현 -Authorization BaseUrl & Redirection BaseUrl

에서 설명하고 있으니 참고 해 주시기 바랍니다