Segurança
Por padrão, todos os endpoints de um aplicativo VCR são acessíveis publicamente. O security inserir vcr.yml permite controlar o acesso por caminho, utilizando três níveis de acesso e a aplicação opcional de autenticação.
É altamente recomendável configurar regras de segurança para todos os endpoints do seu aplicativo. Deixar os endpoints desprotegidos expõe seu aplicativo a acessos não autorizados, abusos e custos inesperados. No mínimo, defina um nível de acesso padrão restritivo e abra explicitamente apenas os caminhos que precisam ser públicos (como os callbacks de webhook da Vonage).
Níveis de acesso
| Nível | Descrição |
|---|---|
public | Não é necessária autenticação. Qualquer pessoa pode acessar o endpoint. |
private | Não é acessível de fora da plataforma. Apenas os serviços internos do VCR podem chamá-lo. |
authenticated | Requer credenciais válidas da API da Vonage no Authorization cabeçalho (HTTP Basic: base64(api_key:api_secret)). A plataforma valida as credenciais antes de encaminhar a solicitação para o seu aplicativo. |
Configuração
accessdefine o padrão nível de acesso para todos os caminhos que não forem correspondidos por uma substituição.overrideé uma lista de regras específicas para cada caminho. As regras são avaliadas em ordem; a correspondência mais específica prevalece.auth-methodé necessário quandoaccesséauthenticated. O único valor permitido évonage_basic.
Caracteres curinga em caminhos
| Caractere curinga | Partidas | Exemplo |
|---|---|---|
* | Um único segmento de caminho | /users/*/profile partidas /users/123/profile mas não /users/123/settings/profile |
** | Qualquer número de segmentos de caminho | /api/** partidas /api/v1, /api/v1/users, /api/v1/users/123, etc. |
Os pontos de extremidade de webhooks exigem acesso irrestrito
As chamadas de retorno da plataforma Vonage (chamadas recebidas, mensagens recebidas, confirmações de entrega etc.) têm origem fora da sua instância. Esses pontos de extremidade devem ser configurados para public, caso contrário, a plataforma da Vonage não poderá acessá-los e seus provedores não receberão os eventos.
Como funciona o acesso autenticado
Quando uma solicitação chega a um authenticated caminho, o controlador de tráfego:
- Verifica se um
Authorizationo cabeçalho está presente. Se estiver ausente, retorna401 Unauthorized. - Valida as credenciais no serviço de autenticação da Vonage e confirma se o autor da chamada pertence à mesma Account da Vonage que o proprietário da instância. Se forem inválidas ou não corresponderem, retorna
403 Forbidden. - Se a validação for bem-sucedida, a solicitação é encaminhada para o seu aplicativo sem alterações.
O vonage_basic O método de autenticação utiliza a autenticação HTTP Basic. O chamador deve enviar sua chave e seu segredo da API da Vonage codificados como credenciais de autenticação Basic:
Authorization: Basic base64(api_key:api_secret)
A maioria dos clientes HTTP lida com isso automaticamente quando você fornece um nome de usuário e uma senha:
// Example: calling an authenticated VCR endpoint from a client
const response = await fetch('https://my-app.use1.runtime.vonage.cloud/api/data', {
headers: {
'Authorization': 'Basic ' + btoa(`${API_KEY}:${API_SECRET}`),
},
});
O código do seu aplicativo não precisa validar as credenciais por conta própria — a plataforma realiza a autenticação antes que a solicitação chegue ao seu manipulador. Se você precisar identificar quem está fazendo a chamada dentro do seu manipulador, a plataforma injeta o ID da conta verificada por meio do x-neru-apiaccountid cabeçalho:
app.get('/api/data', async (req, res) => {
const accountId = req.headers['x-neru-apiaccountid'];
res.json({ accountId });
});
Herança do método de autenticação
Se um override conjuntos de entradas access: authenticated mas omite auth-method, ele herda o nível superior auth-method valor. Se nenhum dos dois estiver definido, a API de implantação rejeitará a configuração.