API로 SSO 삭제

API를 사용하여 SSO 기록을 삭제하는 방법은 무엇인가요? 저는 Discourse를 사용 중이며 external_id를 변경하고 있습니다. 사용자 계정과 게시물을 유지하면서 기존 기록을 어떻게 정리할 수 있을까요?

일단 rails 콘솔에서 SSO 기록을 전부 삭제한 다음, 이메일 주소로 다시 연결하도록 해보는 건 어떨까요? 정확히 어떤 테이블인지 기억이 나지 않지만, 아마도 다음과 같은 형태일 수 있습니다.

 UserAssociatedAccount.all.destroy_all

이 문제에 대한 다른 주제들도 몇 가지 있는 것 같습니다. 검색을 해보셨나요?

SSO 제공자로부터 전달되는 external_id는 변경되지 않는 것으로 기대됩니다. 가능하면 사용자의 external_id 값을 변경하는 것을 피해야 합니다.

SSO 매개변수 require_activation을 true로 설정하지 않는 한, Jay가 언급했듯이 모든 SSO 기록을 삭제할 수 있습니다. 이렇게 하려면 사이트 콘솔에 진입하여 다음을 실행하세요:

SingleSignOnRecord.destroy_all

이 작업을 수행하기 전에 SSO 페이로드에서 require_activation을 true로 설정하지 않고 있는지 확인해야 합니다. 이 매개변수가 설정되어 있다면, 사용자가 사이트에 다음 로그인할 때 이메일 주소 기반으로 사용자를 찾을 수 없습니다. 대신 로그인 시도를 할 때 오류가 발생합니다.

require_activation 매개변수가 true로 설정되어 있지 않다면, 사용자가 Discourse에 다음 로그인할 때 이메일 주소 기반으로 사용자를 찾을 수 있습니다. 이때 해당 사용자를 위한 새로운 SSO 기록이 생성됩니다. SSO 제공자 사이트와 Discourse 간에 사용자의 이메일 주소가 동기화되지 않은 경우, 사용자가 Discourse에 다음 로그인할 때 문제가 발생할 수 있습니다. 이러한 문제를 수정하는 방법에 대한 세부 사항은 여기에서 찾을 수 있습니다: Debug and fixing common DiscourseConnect issues.

위에서 게시한 명령을 실행할 계획이라면, 명령을 실행하기 전에 사이트 데이터베이스의 백업을 반드시 생성하세요. 문제가 발생하면 백업 파일을 복원할 수 있습니다.

저희 디스커스 포럼은 STANDARD 플랜을 사용 중인데, 이 플랜에서 Rails 콘솔에 접근할 수 있나요? 가능하다면 어떻게 진행해야 하나요?

위 명령을 실행하려면 support@discourse.org 또는 @support에 이메일을 보내 주세요.