- Navios
- 23 de setembro de 2026 às 02:58 UTC
- Autor
- Kamo
- Enviar
- 78c4a87
/api/email/outh/callback e ************* são públicos e sem sessão (o provedor redireciona o navegador aqui sem sessão Kamo), então `state` foi o único lugar onde o organização poderia vir de — e era auto-descrevendo base64 JSON o CALLER construído: {"orgid": 1, "nonce": "...", "provider": "GOOGLE WORKSPACE"}. Qualquer um podia fazer um artesanato a nomear um diferentes org e reproduzi-lo contra um código de autorização que obtiveram para si próprios; o "nonce" dentro dele foi gerado, mas nunca armazenado ou verificado contra qualquer coisa, por isso não parou nada. A callback confiável orgId/fornecedor/memberId diretamente para fora desse decodificar e ativou o conectado fornecedor para o que quer que org o estado nomeado. OAuthStateStore agora menta um símbolo opaco, inquestionável sobre a questão, mantendo a org/member/provider/ fluxo que ele resolve apenas em um registro Redis com um TTL de 10 minutos — nunca no próprio token. `peek` lê esse registro sem gastá-lo (usado para escolher o URI redirecionado e o fluxo antes de um callback commits para um manipulador); `consumo` lê e apaga permanentemente, então um callback é uso único: um token reproduzido ou reutilizado resolve-se para nada, indistinguível de um que nunca Existiu. OAuthFlowService e GroupwareOAuthService — que costumava construir e decodificar esse blob independentemente, cada um com sua própria cópia do mesmo mecanismo — agora tanto menta como tokens através desta loja, então há exatamente um lugar que decide o que um símbolo de estado significa. OAuthStateStoreTest falha sem a correção (um segundo consumo da mesma token retorna o registro em vez de nulo); OAuthFlowServiceTest, OAuthFlowKinndStateTest e GroupwareOAuthServiceTest são atualizados para o novo mecanismo — já não constroem ou descodificam uma bolha de estado diretamente, uma vez que Não há mais nada para descodificar.
