Uma dúvida, nesse caso se existir token de acesso na API e utilizar um servidor que não possui o node, como faz para guardar esse token sem que outras pessoas possam encontrar e utilizar?
Opa tudo bem? bom não sei entendi direito a sua dúvida mas basicamente seria assim:
Como funciona a comunicação?
De forma bem, mais bem resumida, quando temos dois ou mais serviços que precisam se comunicar entre si podemos utilizar várias alternativas: HTTP, WebSockets, gRPC e etc...
No caso aqui desta postagem estamos falando exclusivamente de uma WebAPI por cima do protocolo HTTP.
Sendo assim a comunicação é feita idependente de liguagem/framework/OS/Dispositivo pois deste que haja um suporte a HTTP você vai conseguir fazerem as duas aplicações conversarem.
Autentificação entre cliente e servidor(WebApi)
Quando falamos de autentificação/autorização também existem diferentes estratégias que vão desde Certificados até Tokens. Mas basicamente todas vão funcionar na seguinte maneira:
- Cliente faz uma requisição para obter sua "chave de acesso"
- Servidor valida essa requisição e responde com a "chave"
- Cliente utiliza-se dessa chave nas demais requisições para ter acesso a endpoints protegidos.
Uma das estratégias mais utilizadas é do JWT, depois dá uma pesquisada melhor para entender como funciona.
Quando eu digo Cliente me refiro a não só aplicações frontend mas sim qualquer processo que vai Consumir a WebAPI, deste modo um cliente pode ser: app react, mobile, uma cli ou até mesmo outra WebApi (GraphQl é muito utilizado nesses casos).
Utilização do token pelo cliente:
Como citei anteriormente é feito uma especie de Handshake para conseguir um token de acesso, e como o mesmo vai ser tratado vai depender muito de qual estratégia está sendo utilizada. Vou novamente tomar como base o JWT.
Após obter um token JWT é de responsabilidade do cliente armazenar ele de forma segura e para isso também tem várias formas dependendo do tipo de cliente:
- Frontend: Comum armazenar no local/session storage ou até mesmo manter em cookie.
- Mobile: Assim como um frontend tem um local mais "seguro" para guardar o token.
- Api/Servidor: Este pode utilizar de vários métodos: váriaveis de ambiente, serviço de cache, Banco de dados e etc... Neste aqui é mais fácil de manter o token escondido/seguro. SÓ NÃO DEIXA HARD-CODED NO TEU REPOSITÓRIO/CÓDIGO FONTE.
Com base nisso tudo que falei acho que deu pra entender que Cliente/Servidor são idependentes de liguagem, basta seguirem os mesmos protocolos/especificações que as coisas dão certo.
No seu caso, se eu entendi direito, não importa se o servidor é Node, Deno, AspNet, Rust, SpringBoot, Go ou sla... todos vão ser da mesma forma. Basta receber o token e ver a melhor estratégia no seu cliente para armazena-lo. De preferencia que este token seja de curta duração, no Máx. umas 8h, outra coisa que seu servidor pode implementar é CORS ou alguma coisa para validar o audience. Nada vai ser 100% seguro, então melhor ir pelo simples e adicionar camadas a mais como two-factor e etc... Do que ficar tentando reinventar a roda, com certeza que sempre vai ter brechas. Ja vi caso de pessoa colocar umas trocentas VPN só pra entrar no intranet e depois no final o servidor ser Windows Xp 1900 e pedrinha.
Show de bola!!
Alguém já conseguiu implementar o login autenticado do Cartola FC (Globo ID) em um app mobile?
Estou desenvolvendo um app em Capacitor + Firebase e preciso integrar o login oficial do Cartola FC.
A ideia é capturar o token/cookie válido (como o GLBID ou id_token) e conseguir chamar o endpoint /auth/time da API do Cartola de forma autenticada.
Já cheguei até aqui:
Consigo abrir a tela de login do GloboID no WebView.
Após o login, recebo GLBID, glb_uid_jwt e GLOBO_ID nos cookies.
Mas qualquer chamada à API (/auth/time ou /auth/me) retorna 401 Usuário não autorizado.
Minha dúvida:
👉 Qual é o fluxo correto que o Cartola espera para validar a sessão?
É com Bearer token (OAuth2/PKCE) ou com o GLBID nos cookies?
Alguém aqui já implementou isso com sucesso e pode dar um norte (ou mesmo confirmar se só com parceria oficial da Globo é possível)?
Sei que é possível porque Parciais CFC, Guru do Cartola, Cartomante, fazem isso... mas não consigo achar a combinação correta de jeito nenhum! Alguem sabe?