PC나 안드로이드 브라우저에서 로그인할 수 없는데, 앱에서는 가능했습니다

SSO 관련 문제로 보이는 상황이 발생했습니다. 구체적으로는 PC에서만 특정 Discourse 커뮤니티 포럼에 로그인할 수 없는 문제입니다. 다른 환경에서는 안드로이드 웹 브라우저나 모바일 앱을 통해 포럼에 자유롭게 접근할 수 있습니다.

양쪽에서 며칠간 문제를 조사한 결과, hubitat → portal.hubitat → discourse/session/sso_login?___ → hubitat으로 돌아가는 리다이렉트 과정에서 문제가 발생하는 것으로 결론을 내렸습니다. 이로 인해 SSO ID가 2개월간의 휴가 기간 동안 만료되었을 가능성이 있습니다.

사용자인 제가 SSO 자격 증명을 초기화할 방법이 있을까요?
아니면 포럼 관리자에게 전달하여 내 계정에 대해 같은 작업을 수행할 수 있도록 안내할 수 있는 단계가 있을까요?

그 외 모든 방법(다른 브라우저 사용, 캐시 삭제, 쿠키 삭제, 3자 차단, 시크릿 모드 등)을 시도해 보았지만 효과 없었습니다.

감사합니다! - Tim

안녕하세요, @TimGNO 님을 환영합니다 :slight_smile:

귀하의 게시글은 이 버그와 관련이 없어 보입니다. 해당 게시글을 별도의 주제로 이동해 드릴까요?

네, 감사합니다. 그리고 이 오래된 스레드에 글을 남겨서 초보처럼 보일 수도 있겠네요, ㅋㅋ. 50년 이상의 IT 경력이 있음에도 불구하고 머리가 하얘지는 순간 중 하나입니다.

:smiley:

문제가 이 고집스러운 쿠키에서 비롯된 건 아닌지 자꾸만 생각난다. 세션이 시작하기도 전에 만료시키는 건 아닐까?
SCREENSHOT
(아직 이미지를 올릴 수 없어서 임시로 이미지 링크를 플레이스홀더로 사용함)

참고: Chrome > 검사 > 네트워크 > 쿠키에서 캡처함

잘 모르겠습니다. 하지만 서버(혹은 PC—아니면 모든 PC, 즉 모든 사용자?)의 시간을 확인해 보시는 게 좋겠습니다. 시간이 틀어져 있다면 그 문제를 설명할 수 있을 것 같습니다(하지만 정확히는 모르겠네요).

그 외 확인해 볼 수 있는 것들은 모든 것이 HTTPS로 구성되어 있는지, 그리고 해당 인증서가 유효한지입니다.

지금까지는 단일 PC(Windows 10)에서만 시도해 보았지만, 이제 다른 환경에서도 시도해 볼 예정입니다. 이 문제는 과거에 다른 포럼 회원들에게도 영향을 미친 적이 있지만 일시적이었고, 현재는 제가 유일하게 불만을 제기하고 있습니다. (저는 사이트 소유자나 관리자가 아닙니다.)

이미 제가 조사해 본 항목들 중 일부였지만, 유용한 조언을 주셔서 감사합니다:

  • 쿠키
  • 캐싱
  • 브라우저 변경
  • User Agent 스푸핑
  • Same-site / CORS 설정
  • HTTPS 전용 활성화
  • 인증서
  • 3자 쿠키 차단
  • NTP/시간/여름시간제(DST)

불행히도, Hubitat의 (Discourse Community) 사이트 관리자는 CES '23에 4일 이상 참석 중이지만, 돌아온 후 SSO 설정을 점검하겠다고 약속했습니다. 확인 후 보고드리겠습니다.

업데이트: 데스크톱과 모바일 플랫폼 간의 인식된 동작 차이를 더 명확히 하려다 안드로이드 기기에서 “Hubitat 앱”(실질적으로는 단순한 북마크와 브라우저 프론트엔드에 불과한 것)을 삭제한 뒤, Chrome 브라우저를 통해 해당 사이트에 접속을 시도했습니다. 동일한 오류 상황이 발생했습니다. 여전히 로그인할 수 없습니다. 로그인 페이지를 새로고침하면 다음과 같은 메시지가 표시됩니다:

“로그인 오류
계정 로그인 시간이 초과되었습니다. 다시 로그인해 주세요.”

제 추측으로는 "앱"이 제 휴직 기간 이전의 어떤 형태의 인증 키를 유지하고 있었던 것 같아, 그 변수를 제거하고자 했던 것입니다.

이제 완전히 확신합니다. 이는 기기, 플랫폼 또는 브라우저 수준의 클라이언트 측 문제가 아니라 서버 측, 사용자 계정 수준의 문제입니다. 아마도 잘 알려진 Discourse 프레임워크의 오류로, 알려진 해결책이 있을 수도(?) 있겠네요. 도움이 도착할 때까지 구글링을 해야겠네요.

사이트에서 다른 사용자들도 동일한 문제를 겪고 있는지 알고 계신가요?

사이트 관리자가 아직 하지 않았다면, verbose_discourse_connect_logging을 활성화할 수 있습니다. 해당 설정을 사용하여 DiscourseConnect 문제를 디버깅하는 방법에 대한 자세한 내용은 여기에서 확인할 수 있습니다: Debug and fixing common DiscourseConnect issues. 다만, 해당 주제가 현재 겪고 계신 문제를 다루고 있는지 확실하지 않습니다.

이 오류에 대해 로그에 표시되는 전체 오류 메시지는 다음과 같은 형태일 것입니다: Nonce is incorrect, was generated in a different browser session, or has expired(Nonce가 올바르지 않거나, 다른 브라우저 세션에서 생성되었거나, 만료되었습니다). 이 문제의 가능한 원인은 다음과 같습니다:

  • 로그인 시도에 따라 애플리케이션에서 Discourse로 전달되는 nonce가 Discourse에서 애플리케이션으로 처음 전송된 nonce와 일치하지 않는 경우
  • nonce가 로그인하는 세션과 다른 세션에서 생성된 경우. 이는 애플리케이션이 브라우저 리다이렉트를 통해 nonce가 생성되도록 하는 대신, Discourse에서 nonce를 가져오기 위해 백그라운드 요청을 보내는 경우에 발생합니다.
  • 사용자가 로그인을 완료하기까지 10분(nonce 만료 시간) 이상 기다린 경우

제 추측으로는 목록의 첫 번째 문제를 겪고 계실 것 같습니다.

“해결됨”

아이러니하게도, 어제 구글은 원(One) 구독과 함께 VPN 서비스를 제공한다고 발표했는데, 저는 마침 이 서비스를 이용하고 있습니다.

Windows에서 VPN을 설치하고 활성화한 후, 위에서 언급한 로그인이 갑자기 진행되었습니다. 문제 없이 순조롭게 완료되었습니다.

정확한 원인은 영원히 알 수 없을지 모르지만, 같은 상황에 처한 미래의 누군가에게 도움이 되길 바라며 "해결됨"으로 표시합니다.