Confusão sobre usuário autenticado da API

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!

Alguns artigos relacionados que li:

Uma chave de API de Administrador é a chave do reino

Não a coloque em nenhum aplicativo de frontend. Se o fez, recomendo que a revogue imediatamente.

3 curtidas

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.

2 curtidas

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?