Tenho uma dúvida mais sobre a segurança do uso da API, pois acho que estou perdendo algum conceito trivial com minha falta de experiência.
Tenho uma implementação headless do Discourse para integrar ao meu frontend e ativei com sucesso o SSO para autenticação de usuários.
Minha compreensão inicial era que eu estava usando o SSO para me autenticar como o “activeUser” para buscar dados específicos do activeUser da API. Percebo agora que isso não está totalmente correto.
Percebo agora que os dados retornados parecem depender do ‘api-username’ passado no cabeçalho. Mas estou usando uma chave de API de Administrador, então acredito que isso significa que posso buscar os dados de qualquer usuário que eu queira, passando o nome de usuário correto para “api-username”.
Então, minha pergunta se resume a: parece que a API não introduz o conceito de “activeUser” e eu tenho que ajustar o usuário ativo recuperando o nome de usuário por external_id e, em seguida, usando-o como api-username durante a sessão ativa, está correto?
Se meu entendimento estiver correto, não é fácil para um hacker simplesmente modificar o api-username no cabeçalho para recuperar discussões de chat de qualquer usuário?
Qualquer informação adicional será apreciada para me ajudar a entender. Obrigado!
Você nunca deve usar essa API do frontend, porque nesse caso, este é realmente um risco (na verdade, o risco é muito maior porque o hacker pode fazer qualquer coisa)
Você deve fazer isso do backend.
Se isso não for uma opção, você deve usar chaves de API de usuário em vez disso.
Como uma implementação headless, executarei isso a partir do meu front-end. Portanto, neste caso, parece que preciso gastar algum tempo tentando decifrar a discussão sobre este tópico então:
Semelhante a essas discussões, eu estaria interessado em gerar automaticamente a chave de API do usuário usando meu acesso à API de administrador. No entanto, no meu fluxo, eu não gostaria que o usuário fosse redirecionado para uma nova página para “aprovar” meu aplicativo. Eu quererei forçar a aprovação usando minha confiável chave de API de administrador ou existe uma configuração que posso desativar para que autenticação adicional não seja necessária para a nova chave de API de usuário que eu gerar?