-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: OAuth 콜백 파라미터로 리다이렉트 위치를 지정하도록 수정 #685
Conversation
Walkthrough이 변경 사항은 OAuth2 인증 요청 처리를 향상시키기 위해 새로운 상수, 수정된 필드 및 메서드를 도입합니다. Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant Client
participant AuthServer
participant CustomOAuth2AuthorizationRequestResolver
User->>Client: 인증 요청
Client->>CustomOAuth2AuthorizationRequestResolver: 요청 처리
CustomOAuth2AuthorizationRequestResolver->>AuthServer: OAuth2 인증 요청 전송
AuthServer-->>CustomOAuth2AuthorizationRequestResolver: 인증 응답
CustomOAuth2AuthorizationRequestResolver->>Client: 사용자 리다이렉트
Client->>User: 인증 성공 메시지
Assessment against linked issues
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (invoked as PR comments)
Additionally, you can add CodeRabbit Configuration File (
|
Job Summary for GradleCheck Style and Test to Develop :: build-test
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files selected for processing (4)
- src/main/java/com/gdschongik/gdsc/global/common/constant/SecurityConstant.java (1 hunks)
- src/main/java/com/gdschongik/gdsc/global/config/WebSecurityConfig.java (5 hunks)
- src/main/java/com/gdschongik/gdsc/global/security/CustomOAuth2AuthorizationRequestResolver.java (1 hunks)
- src/main/java/com/gdschongik/gdsc/global/security/CustomSuccessHandler.java (1 hunks)
Additional comments not posted (7)
src/main/java/com/gdschongik/gdsc/global/common/constant/SecurityConstant.java (1)
11-11
: 새로운 상수 추가 승인
OAUTH_TARGET_URL_PARAM_NAME
상수가 추가되어 OAuth 관련 작업에서 타겟 URL을 처리하는 데 사용됩니다. 이 변경은 문제없이 보이며, OAuth 콜백 URI 처리를 개선하는 데 도움이 될 것입니다.src/main/java/com/gdschongik/gdsc/global/security/CustomSuccessHandler.java (1)
27-27
: 생성자 로직 변경 승인
setTargetUrlParameter(OAUTH_TARGET_URL_PARAM_NAME)
를 사용하여 생성자 로직이 변경되었습니다. 이는 더 신뢰할 수 있는 OAuth 흐름을 보장하는 데 중요한 변경입니다. 이제 인증 후 리디렉션은 참조자에 의존하지 않고 명시적으로 지정된 타겟 URL 매개변수를 사용합니다.src/main/java/com/gdschongik/gdsc/global/security/CustomOAuth2AuthorizationRequestResolver.java (1)
34-47
: OAuth2 인증 요청 맞춤화 승인
CustomOAuth2AuthorizationRequestResolver
는 참조자를 추가 매개변수로 포함하여 OAuth2 인증 요청을 맞춤화합니다. 이는 OAuth 콜백 URI를 더 신뢰할 수 있게 처리하는 PR 목표와 일치합니다. 참조자 URL이 존재하는 경우 이를 추가 매개변수로 포함하여 OAuth2 흐름을 개선합니다.src/main/java/com/gdschongik/gdsc/global/config/WebSecurityConfig.java (4)
14-14
: 새로운 보안 클래스가 추가되었습니다.
CustomOAuth2AuthorizationRequestResolver
와 다른 보안 관련 클래스들이 추가되었습니다. 이는 OAuth2 로그인 구성을 개선하기 위한 것으로 보입니다.
54-54
: 새로운 필드clientRegistrationRepository
가 추가되었습니다.이 필드는
CustomOAuth2AuthorizationRequestResolver
를 초기화하는 데 사용됩니다. 이는 OAuth2 인증 요청을 더 유연하게 처리할 수 있게 해줍니다.
100-104
: OAuth2 로그인 구성이 수정되었습니다.OAuth2 로그인 과정에서
customOAuth2AuthorizationRequestResolver
를 사용하여 인증 요청을 맞춤화합니다. 이는 보안 설정을 강화하고 사용자 인증 흐름을 더 잘 제어할 수 있게 합니다.
147-150
: 새로운 Spring beancustomOAuth2AuthorizationRequestResolver
가 추가되었습니다.이 메소드는
ClientRegistrationRepository
를 사용하여CustomOAuth2AuthorizationRequestResolver
를 초기화합니다. 이는 OAuth2 인증 요청을 더 효과적으로 관리할 수 있게 해줍니다.
🌱 관련 이슈
📌 작업 내용 및 특이사항
문제 상황
콜백 URI 파라미터로 위치를 저장하기
SavedRequestAwareAuthenticationSucessHandler
로 해결하는 방법 찾아봤었는데요, 저희는 세션을 사용하고 있지 않기 때문에 불가능했습니다./login/oauth2/code
) 쿼리 파라미터로 이를 지정해주면 깃허브에서 리다이렉트를 내려주면서 referer가 소실되는 문제를 해결할 수 있지 않을까? 싶었습니다.application-security.yml
에서, 다음과 같이 수정하고 테스트해봤습니다.redirect-uri: "https://{baseHost}{basePort}{basePath}/login/oauth2/code/{registrationId}"
redirect-uri: "https://{baseHost}{basePort}{basePath}/login/oauth2/code/{registrationId}?target=https://local-onboarding.gdschongik.com"
CustomSuccessHandler
에서setUserReferer
(레퍼러 기반 리다이렉트 정책) 을 다음과 같이 변경했습니다.OAuth 인가 요청에 추가 파라미터 넣기
OAuth2AuthorizationRequestResolver
라는게 있는데, 말그대로 'OAuth' '인가 요청'을 리졸브하는 클래스입니다. 즉resolve()
메서드를 통해OAuth2AuthorizationRequest
객체를 만들어서 반환합니다.additionalParameters
프로퍼티에 우리가 원하는 (target
,클라이언트 URL
) 쌍을 넣으면 됩니다. 클라이언트 URL = referrer이므로 이는 헤더에서 가져옵시다.📝 참고사항
📚 기타
Summary by CodeRabbit
New Features
Bug Fixes