O external_id enviado pelo provedor de SSO deve nunca mudar. Se for possível, você deve evitar alterar os valores de external_id do seu usuário.
Desde que você não esteja definindo o parâmetro de SSO require_activation como true, você pode excluir todos os registros de SSO, conforme mencionado por Jay. Para fazer isso, acesse o console do seu site e execute:
SingleSignOnRecord.destroy_all
Antes de fazer isso, você precisa ter certeza de que não está definindo require_activation como true no payload do SSO. Se esse parâmetro estiver definido, os usuários não serão encontrados com base em seus endereços de e-mail na próxima vez que fizerem login no site. Em vez disso, eles receberão um erro ao tentar fazer login.
Se o parâmetro require_activation não estiver definido como true, os usuários serão encontrados com base em seus endereços de e-mail na próxima vez que fizerem login no Discourse. Um novo registro de SSO será criado para eles nesse momento. Se os endereços de e-mail de algum usuário estiverem dessincronizados entre o site do seu provedor de SSO e o Discourse, eles encontrarão problemas na próxima vez que fizerem login no Discourse. Você pode encontrar alguns detalhes sobre como corrigir esses problemas aqui: Debug and fixing common DiscourseConnect issues.
Se você for executar o comando que postei acima, certifique-se de criar um backup do banco de dados do seu site antes de executar o comando. Se algo der errado, você poderá restaurar o arquivo de backup.