다른 회사(테넌트) 네이버웍스에 로그인된 브라우저에서 OAuth authorize 호출 시 "유효하지 않은 클라이언트 정보입니다" 오류 — redirect_uri 로 돌려받을 방법이 있나요?
안녕하세요. 자사 테넌트(ourcompany.com)에 등록한 앱으로 사내 어드민의 네이버웍스 로그인(OAuth 2.0 Authorization Code + OIDC)을 구현해 운영 중입니다. 정상 상황에서는 잘 동작하는데, 특정 조건에서 네이버웍스 오류 페이지에 갇혀 저희 서비스로 돌아오지 못하는 문제가 있어 문의드립니다.
■ 요청 URL
https://auth.worksmobile.com/oauth2/v2.0/authorize?client_id=XXXXXXXXXXXXXXXXXXXX&redirect_uri=https%3A%2F%2Fadmin.ourcompany.com%2Fapi%2Fauth%2Fworks%2Fcallback&response_type=code&scope=openid%20email%20profile&state=…&nonce=…
(redirect_uri 는 Developer Console 에 등록된 값과 정확히 일치합니다.)
■ 재현 조건별 결과 — 같은 URL 이고, 브라우저의 네이버웍스 로그인 상태만 다릅니다.
1. 로그인 없음(시크릿 창)
→ 네이버웍스 로그인 폼이 표시됩니다. 정상.
2. 자사 테넌트(ourcompany.com) 계정으로 로그인된 상태
→ 인가 코드가 발급되고 redirect_uri 로 정상 복귀합니다.
3. 다른 회사 테넌트 계정으로 로그인된 상태
→ "유효하지 않은 클라이언트 정보입니다. Client Id 또는 Parameter를 확인해 주세요." 페이지에서 끝납니다. redirect_uri 로는 아무것도 돌아오지 않습니다.
즉 client_id·redirect_uri 설정 문제가 아니라, 브라우저에 다른 테넌트 세션이 있으면 그 테넌트 기준으로 client_id 를 조회해 실패하는 것으로 보입니다.
■ 이미 시도한 것
- domain=ourcompany.com 추가: 세션이 없을 때는 자사 테넌트 로그인 폼(@ourcompany.com 고정)이 떠서 효과가 있지만, 다른 테넌트 세션이 있을 때는 붙여도 똑같은 오류 페이지가 나옵니다.
- prompt=login, max_age=0: 무시됩니다(포럼 100593 답변대로 지원하지 않는 것으로 이해했습니다).
- end_session_endpoint(/oauth2/v2.0/logout)로 먼저 로그아웃: id_token_hint 가 필수인데, 다른 테넌트 세션에 대한 id_token 은 저희가 가질 수 없어 사용할 수 없습니다.
■ 문의
1. 다른 테넌트 세션이 있는 브라우저에서도 요청한 테넌트(domain) 기준으로 client_id 를 조회하게 하거나, 자사 테넌트 로그인 폼으로 보내는 방법이 있을까요?
2. 위 오류를 네이버웍스 페이지에서 끝내지 않고 redirect_uri?error=… 형태로 돌려받을 수 있는 방법이 있을까요? 저희 화면에서 "회사 계정으로 다시 로그인하세요"를 안내하고 싶습니다.
3. 둘 다 없다면, 이 경우 사용자에게 권장하는 안내 방법이 있는지 알고 싶습니다.
사내 직원이 개인적으로 다른 회사 네이버웍스를 함께 쓰는 경우가 있어 실제로 발생하고 있습니다. 확인 부탁드립니다. 감사합니다.
게시글에 새로운 댓글이 달리면 알림을 전송합니다.
댓글0
궁금한 점을 해결하지 못하셨나요?
지금 바로 NAVER WORKS 사용자들에게 물어보세요!