Pular para o conteúdo principal

🎯 Passo 4: Usando o Token nas Requisições

Agora que você obteve suas credenciais e sabe gerar tokens, o próximo passo é usá-los corretamente nas chamadas às APIs da Credsystem.

🌐 Lembre-se: Use Suas URLs Reais

As URLs nos exemplos abaixo são ilustrativas. Substitua pelas URLs reais que você recebeu no SharePoint (ambiente, realm, endpoints, etc.).

📖 Como Funciona o Fluxo

  1. Gerar Token → Autenticar com suas credenciais
  2. Armazenar Token → Manter em cache enquanto válido
  3. Usar Token → Incluir no header Authorization: Bearer {token}
  4. Renovar Token → Quando expirar ou receber erro 401
  5. Chamar API → Fazer requisições com token válido

Este documento mostra exemplos completos de classes de autenticação que gerenciam todo esse fluxo automaticamente.


🎭 Cenários de Uso

Servidor Backend (Recomendado)

Frontend → Backend → [Auth + Token] → API Credsystem

Seguro - Credenciais no backend
Performático - Cache de token compartilhado
Controlado - Você gerencia toda autenticação

Servidor-a-Servidor

Seu Servidor → [Auth + Token] → API Credsystem

Ideal para integrações automatizadas
Sem interação de usuário
Client Credentials Grant

❌ Frontend Direto (NÃO FAZER)

Browser Frontend → [Auth + Token] → API Credsystem

Inseguro - Expõe credenciais no navegador
CORS - Pode ter problemas
Não recomendado pela Credsystem

💡 Conceitos Importantes

✅ O que fazer:

  • Reutilizar token enquanto válido (implementar cache)
  • Renovar automaticamente antes de expirar
  • Tratar erro 401 (token expirado) e tentar novamente
  • Armazenar token APENAS no backend (nunca frontend)

❌ O que NÃO fazer:

  • Gerar novo token a cada requisição (desperdiça recursos)
  • Armazenar token no localStorage/sessionStorage do navegador
  • Ignorar erros 401 sem renovar token

🔧 Classe de Autenticação Completa

Estas classes gerenciam automaticamente:

  • Cache de token válido (reutilização)
  • Renovação automática quando expira
  • Retry automático em caso de erro 401
  • Margem de segurança de 30s antes da expiração
  • Tratamento de erros robusto

Escolha a linguagem e copie a classe completa para seu projeto:

// Classe completa para gerenciar autenticação
class CredsystemAuth {
constructor(clientId, clientSecret) {
this.clientId = clientId;
this.clientSecret = clientSecret;
this.token = null;
this.tokenExpiry = null;
}

// Gerar ou reutilizar token
async getToken() {
// Reutilizar token se ainda válido
if (this.token && this.tokenExpiry > Date.now()) {
console.log('✅ Reutilizando token válido');
return this.token;
}

console.log('🔄 Gerando novo token...');
const response = await fetch(
'https://ssoprd.credsystem.com.br/auth/realms/credsystem/protocol/openid-connect/token',
{
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: new URLSearchParams({
grant_type: 'client_credentials',
client_id: this.clientId,
client_secret: this.clientSecret,
}),
}
);

if (!response.ok) {
throw new Error(`Erro ao gerar token: ${response.status}`);
}

const data = await response.json();
this.token = data.access_token;
// Definir expiração 30s antes (margem de segurança)
this.tokenExpiry = Date.now() + (data.expires_in - 30) * 1000;

console.log('✅ Token gerado com sucesso!');
return this.token;
}

// Fazer requisição à API com token
async callAPI(endpoint, method = 'GET', body = null) {
const token = await this.getToken();

const options = {
method,
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json',
},
};

if (body) {
options.body = JSON.stringify(body);
}

const response = await fetch(endpoint, options);

// Tratar token expirado - renovar e tentar novamente
if (response.status === 401) {
console.log('⚠️ Token expirado, gerando novo...');
this.token = null; // Forçar novo token
return this.callAPI(endpoint, method, body); // Retry
}

return response;
}
}

// ========================================
// EXEMPLO DE USO
// ========================================

const auth = new CredsystemAuth(
process.env.CREDSYSTEM_CLIENT_ID,
process.env.CREDSYSTEM_CLIENT_SECRET
);

// Fazer chamada à API
const response = await auth.callAPI('https://api.credsystem.com.br/v1/exemplo');
const data = await response.json();
console.log(data);

// O token será reutilizado em chamadas subsequentes
const response2 = await auth.callAPI('https://api.credsystem.com.br/v1/outro-endpoint');

🎯 Próximos Passos

Agora que você domina o uso de tokens:

👉 Segurança e Boas Práticas - Aprofunde em proteção de credenciais

👉 Troubleshooting - Solucione problemas comuns

Ou volte para o Índice de Autenticação