SSO 관련 문제로 보이는 상황이 발생했습니다. 구체적으로는 PC에서만 특정 Discourse 커뮤니티 포럼에 로그인할 수 없는 문제입니다. 다른 환경에서는 안드로이드 웹 브라우저나 모바일 앱을 통해 포럼에 자유롭게 접근할 수 있습니다.
양쪽에서 며칠간 문제를 조사한 결과, hubitat → portal.hubitat → discourse/session/sso_login?___ → hubitat으로 돌아가는 리다이렉트 과정에서 문제가 발생하는 것으로 결론을 내렸습니다. 이로 인해 SSO ID가 2개월간의 휴가 기간 동안 만료되었을 가능성이 있습니다.
사용자인 제가 SSO 자격 증명을 초기화할 방법이 있을까요?
아니면 포럼 관리자에게 전달하여 내 계정에 대해 같은 작업을 수행할 수 있도록 안내할 수 있는 단계가 있을까요?
그 외 모든 방법(다른 브라우저 사용, 캐시 삭제, 쿠키 삭제, 3자 차단, 시크릿 모드 등)을 시도해 보았지만 효과 없었습니다.
지금까지는 단일 PC(Windows 10)에서만 시도해 보았지만, 이제 다른 환경에서도 시도해 볼 예정입니다. 이 문제는 과거에 다른 포럼 회원들에게도 영향을 미친 적이 있지만 일시적이었고, 현재는 제가 유일하게 불만을 제기하고 있습니다. (저는 사이트 소유자나 관리자가 아닙니다.)
이미 제가 조사해 본 항목들 중 일부였지만, 유용한 조언을 주셔서 감사합니다:
쿠키
캐싱
브라우저 변경
User Agent 스푸핑
Same-site / CORS 설정
HTTPS 전용 활성화
인증서
3자 쿠키 차단
NTP/시간/여름시간제(DST)
불행히도, Hubitat의 (Discourse Community) 사이트 관리자는 CES '23에 4일 이상 참석 중이지만, 돌아온 후 SSO 설정을 점검하겠다고 약속했습니다. 확인 후 보고드리겠습니다.
업데이트: 데스크톱과 모바일 플랫폼 간의 인식된 동작 차이를 더 명확히 하려다 안드로이드 기기에서 “Hubitat 앱”(실질적으로는 단순한 북마크와 브라우저 프론트엔드에 불과한 것)을 삭제한 뒤, Chrome 브라우저를 통해 해당 사이트에 접속을 시도했습니다. 동일한 오류 상황이 발생했습니다. 여전히 로그인할 수 없습니다. 로그인 페이지를 새로고침하면 다음과 같은 메시지가 표시됩니다:
“로그인 오류
계정 로그인 시간이 초과되었습니다. 다시 로그인해 주세요.”
제 추측으로는 "앱"이 제 휴직 기간 이전의 어떤 형태의 인증 키를 유지하고 있었던 것 같아, 그 변수를 제거하고자 했던 것입니다.
이제 완전히 확신합니다. 이는 기기, 플랫폼 또는 브라우저 수준의 클라이언트 측 문제가 아니라 서버 측, 사용자 계정 수준의 문제입니다. 아마도 잘 알려진 Discourse 프레임워크의 오류로, 알려진 해결책이 있을 수도(?) 있겠네요. 도움이 도착할 때까지 구글링을 해야겠네요.
이 오류에 대해 로그에 표시되는 전체 오류 메시지는 다음과 같은 형태일 것입니다: Nonce is incorrect, was generated in a different browser session, or has expired(Nonce가 올바르지 않거나, 다른 브라우저 세션에서 생성되었거나, 만료되었습니다). 이 문제의 가능한 원인은 다음과 같습니다:
로그인 시도에 따라 애플리케이션에서 Discourse로 전달되는 nonce가 Discourse에서 애플리케이션으로 처음 전송된 nonce와 일치하지 않는 경우
nonce가 로그인하는 세션과 다른 세션에서 생성된 경우. 이는 애플리케이션이 브라우저 리다이렉트를 통해 nonce가 생성되도록 하는 대신, Discourse에서 nonce를 가져오기 위해 백그라운드 요청을 보내는 경우에 발생합니다.