Drupal SSO gera sessões de usuário incorretas

Olá,
Estamos utilizando SSO a partir do Drupal, e um comportamento não intencional aqui é que todos os usuários veem nosso servidor Drupal como conectado, além de sua sessão atual. Isso está causando muita preocupação e confusão em nossa comunidade, pois eles veem outro dispositivo conectado que não é o deles.

É possível desativar esse recurso ou, melhor ainda, podemos excluir determinados endereços IP para ocultar nosso servidor da lista de Dispositivos Usados Recentemente?

O uso de um provedor externo de SSO não faz com que ele seja listado nesta lista.

O que você vê pode ser um artefato de outra coisa, como a criação de chaves de API para usuários, etc.

Já vi esse problema antes quando um site Drupal é o provedor de SSO para o Discourse. Não vi problemas semelhantes com outros provedores de SSO. Há algum módulo do Drupal que você está usando para SSO? Se houver, pode nos dizer onde encontrá-lo?

Você pode ocultar a seção “Dispositivos usados recentemente” com CSS. Isso pode ser uma boa solução temporária para o problema.

.control-group.pref-auth-tokens {
    display: none;
}

Estamos usando o módulo contributível Discourse Forum Integration https://www.drupal.org/project/discourse

Obrigado pela dica, temporariamente ocultamos isso usando CSS. Mas seria bom saber se é configurável para ocultar apenas nosso servidor da lista, permitindo que os usuários continuem vendo seus dispositivos usados recentemente.

Sugiro entrar em contato com o desenvolvedor do Drupal — a última atualização desse módulo parece ter sido em 2015, com suporte listado à versão 1.2.0.beta5 do Discourse (lançada por nós em janeiro de 2015). Embora eu fique feliz em ver que ele ainda funciona, não é surpreendente que existam alguns problemas menores.

Vale ressaltar também que o módulo do Drupal mencionado acima está disponível apenas para o Drupal 7, que atingirá o fim do suporte em novembro de 2021. (Não é amanhã, mas já está perto o suficiente.)

Sim, obrigado, estamos cientes (e não muito entusiasmados, já que nosso site foi lançado recentemente :disappointed_relieved: )

Dê uma olhada rápida no módulo Drupal Discourse. Não está claro para mim o que está causando o problema, mas, por algum motivo, o User Agent e o IP do cliente estão sendo definidos com os valores do servidor Drupal em vez do IP e do User Agent do usuário durante o login SSO. Isso pode estar relacionado à forma como o método drupal_goto funciona.

Uma coisa que notei no módulo é que ele oferece funcionalidades para exibir conteúdo do Discourse no Drupal. Para isso, ele faz solicitações de API ao Discourse com credenciais de API incluídas na string de consulta. Esse tipo de autenticação de API foi descontinuado pelo Discourse. Em algum momento no futuro próximo, esse tipo de solicitação deixará de funcionar. Se você estiver usando o módulo para exibir conteúdo do Discourse no seu site Drupal, talvez precise investigar mais a fundo.

Este módulo foi atualizado pela última vez em 2015. Existe um módulo Drupal Discourse SSO que foi atualizado mais recentemente: https://www.drupal.org/project/discourse_sso. Acredito que ele forneça apenas funcionalidade SSO. Não parece ter nenhum código que adicione conteúdo do Discourse a um site Drupal.

Obrigado pelas informações adicionais, Simon. De fato, estamos fazendo exatamente isso: a seção de comentários do nosso blog usa um tópico do Discourse para que os usuários possam discutir, e o conteúdo desse tópico também é exibido no artigo do blog de volta no Drupal.

Seria este o lugar certo para saber mais sobre a descontinuação da autenticação da API? Discourse REST API Documentation

Obrigado novamente!

Sim, o exemplo de solicitação POST apresentado no início desse tópico contém as informações de que você precisa. Para corrigir o módulo Drupal Discourse a fim de usar autenticação baseada em cabeçalho, seria necessária apenas uma pequena alteração em seu código.

Considerando que seu site Discourse está atualizado, provavelmente há um aviso sobre o uso de métodos de autenticação descontinuados para solicitações de API no painel de administração do seu Discourse.