SSO 콜백이 연결을 닫음(서버가 0바이트 전송); 이전에 임페르소네이션에서 로그아웃됨

(참고: 이 문제는 Connection lost during callback · Issue #28 · habi-dat/discoursesso · GitHub 에도 보고되었습니다.)

안녕하세요,

저희 Discourse SSO에서 아주 이상한 문제가 발생하고 있습니다. 한 사용자가 임퍼소네이션(impersonation)에서 로그아웃한 이후로 다시 로그인할 수 없습니다. 현재 해당 사용자가 로그인하려고 하면 다음과 같은 상황이 발생합니다. (해당 사용자는 이전에 Nextcloud에 로그인되어 있었습니다.)

서버가 단순히 연결을 종료합니다. 오류 로그를 찾을 수 없습니다. nginx 프록시, Discourse, Nextcloud 어디에도 로그가 없습니다.

흥미롭게도 네트워크나 기기와는 전혀 무관합니다. 로그인에 실패하는 것은 오직 이 사용자뿐입니다.

또한 Discourse에서 SSO 데이터를 지우고, 새로운 Discourse 계정이 생성되도록 이메일 주소를 변경해 보았지만 문제는 여전히 지속됩니다.

Nextcloud 플러그인의 문제일 것으로 의심하지만, Discourse에서 오류 메시지가 전혀 보이지 않는 것이 의아합니다. (로그를 지우고 다시 시도해 보았지만, 아무런 기록도 남지 않았습니다.)

관리자 - 설정 - 로그인 - verbose_discourse_connect_logging을 활성화하셨나요?

방금 수행했습니다. 유일한 기록은 다음과 같습니다:

Verbose SSO log: Started SSO process

add_groups: 
admin: 
moderator: 
avatar_force_update: 
avatar_url: 
bio: 
card_background_url: 
confirmed_2fa: 
email: 
external_id: 
groups: 
locale: 
locale_force_update: 
location: 
logout: 
name: 
no_2fa_methods: 
nonce: <removed>
profile_background_url: 
remove_groups: 
require_2fa: 
require_activation: 
return_sso_url: https://hub.diehumanisten.de/session/sso_login
suppress_welcome_message: 
title: 
username: 
website: 

이 문제가 아직 진행 중인가요 @simon.michalke?

네, 방금 다시 테스트해 봤는데 여전히 동일하게 발생합니다.

자, 이제 진짜 문제가 생겼습니다. 문제가 다른 사용자들에게도 번지는 것 같습니다. 두 번째 사용자는 관리자가 아니므로 우회 방법을 사용할 수 없습니다.

유료 지원을 문의하고 싶은데, 제 경우에는 누구에게 연락해야 할까요?

결국 이 답변이 문제를 해결해 주었나요? :crossed_fingers:

네. Nextcloud SSO는 GET만 지원하고 POST 기반 로그인은 지원하지 않습니다. 저희 nginx 프록시는 그룹이 너무 많아 요청 헤더가 가득 차서 해당 요청을 조용히 삭제하고 있었습니다.

현재 적용 중인 임시 해결책은 플러그인을 수동으로 패치하여 그룹을 포함하지 않도록 하는 것입니다:
https://github.com/soudis/discoursesso/issues/28#issuecomment-1165819892

곧 인증을 위해 Keycloak로 전환할 예정입니다.