Com múltiplas instâncias do Discourse configuradas com login obrigatório e que utilizam SSO, estamos enfrentando redirecionamentos infinitos ao fazer login no Safari no iOS. Veja o que acontece:
O usuário não está logado nem no Discourse nem no site mestre do SSO.
O usuário navega até a instância do Discourse.
O Discourse redireciona para a página do SSO.
A página do SSO solicita credenciais. O usuário faz login.
O usuário fica preso em um loop de redirecionamento entre o site mestre do SSO e o Discourse, até que o Safari desista.
Se o usuário navegar manualmente até o Discourse novamente, ele estará logado.
Não consigo reproduzir esse comportamento com o Chrome no desktop.
Enquanto um cliente está no loop de redirecionamento, várias entradas de Início do processo SSO e Usuário foi logado são geradas, o que indica que o processo SSO foi bem-sucedido, mas, de alguma forma, após concluir o SSO, o Discourse redireciona o usuário para outro login SSO, em vez da página inicial.
Isso também afeta instâncias antigas onde o SSO funcionava corretamente antes, então não acho que se trate de um problema de configuração do Discourse.
I have seen this on sites that have the setting same site cookies set to Strict, if it is already on Lax recommend attempting to disable and see if it works around the Safari bug.
You are % correct. It was on Lax, the default. Changing it to Disabled fixed the issue immediately. (I assume this is a defense-in-depth thing, on top of your usual CSRF protections, so disabling it is not overly terrible for security?)
I’ve spent a very long time figuring out a similar issue was caused by this samsite=lax behaviour:
This fixes my issue - at least on macOS Mojave - so I assume it fixes it on iOS too. Thanks!
I’d also like to know people’s opinions on this.
What with this being the Mozilla Discourse and all, we don’t have a huge amount of traffic from Safari, so don’t want to make ourselves vulnerable to CSRF attacks for something which will benefit a very small proportion of our users.