Pesquisar K
Appearance
Appearance
A autenticação via SDK JavaScript é adequada para SPAs porque permite acessar as informações de autenticação diretamente no cliente através do SDK LayersPortal.js. No entanto, a validação da sessão deve sempre ser feita no servidor usando o token de aplicação, nunca no cliente.
Importante notar que essa abordagem está disponível apenas para portais embutidos na Layers, já que o SDK LayersPortal.js funciona apenas quando o portal está sendo executado dentro do contexto da Layers (iframe, app mobile, etc.).
Para portais externos ou aplicações SSR, utilize a autenticação via URL com query parameters.
O SDK LayersPortal.js fornece acesso às informações de sessão através de propriedades do objeto global LayersPortal. Quando o portal está embutido na Layers e a biblioteca está conectada, essas propriedades contêm os dados necessários para validar a sessão do usuário.
As propriedades disponíveis são (consulte a referência completa dos parâmetros de autenticação e a referência do LayersPortal.js):
LayersPortal.session: identificador da sessão do usuárioLayersPortal.communityId: identificador da comunidade através da qual o usuário está acessandoLayersPortal.userId: identificador único do usuário na LayersAntes de acessar as informações de autenticação, é necessário importar e configurar o SDK LayersPortal.js na página do portal. Consulte o guia Configurando a lib LayersPortal.js para instruções detalhadas sobre como configurar o SDK.
Antes de acessar as propriedades de autenticação, aguarde o evento connected ou use a promise connectedPromise para garantir que o SDK está conectado à Layers.
LayersPortal.on('connected', function(data) {
// SDK conectado, pode acessar informações de autenticação
const { session, communityId, userId } = LayersPortal;
// Proceder com a validação da sessão
});A validação da sessão deve ser feita no servidor, nunca no cliente. O token de aplicação fornecido pela Layers é uma credencial sensível que não pode ser exposta no frontend. Tokens que vazam no frontend podem ser automaticamente inativados pela Layers por questões de segurança.
O fluxo correto é: o cliente extrai as informações de sessão do SDK LayersPortal.js e envia para seu backend, que então valida a sessão usando o token de aplicação armazenado de forma segura no servidor através do endpoint de validação de sessão.
Segurança
Nunca exponha o token de aplicação no frontend.
A validação da sessão deve sempre acontecer no servidor. Tokens expostos no código JavaScript podem ser facilmente extraídos por qualquer pessoa que acesse o código-fonte da página e podem resultar na inativação automática do token pela Layers.
Implementação no cliente (frontend):
async function validateSession(session, communityId, userId) {
// Fazer requisição para seu backend
const response = await fetch('https://seu-app.com/api/validate-layers-session', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
session,
community: communityId,
userId,
}),
});
if (!response.ok) {
throw new Error('Sessão inválida');
}
}Implementação no servidor (backend):
app.post('/api/validate-layers-session', async (req, res) => {
const { session, community, userId } = req.body;
try {
const response = await fetch(
`https://api.layers.digital/v1/sso/session/validate?session=${session}&community=${community}&userId=${userId}`,
{
method: 'GET',
headers: {
'Authorization': `Bearer ${process.env.LAYERS_APP_TOKEN}`,
},
}
);
if (response.status === 200) {
res.json({ valid: true });
} else {
res.status(401).json({ valid: false });
}
} catch (error) {
console.error('Erro ao validar sessão:', error);
res.status(500).json({ error: error.message });
}
});