@neofaceid/web-sdk 1.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +297 -0
- package/dist/neoface-id-sdk.es.js +1513 -0
- package/dist/neoface-id-sdk.es.js.map +1 -0
- package/dist/neoface-id-sdk.umd.js +11 -0
- package/dist/neoface-id-sdk.umd.js.map +1 -0
- package/package.json +59 -0
package/README.md
ADDED
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
# NeoFace ID SDK Web
|
|
2
|
+
|
|
3
|
+
SDK para captura e reconhecimento facial em aplicações web.
|
|
4
|
+
|
|
5
|
+
## Instalação
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @neofaceid/web-sdk
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Uso Básico
|
|
12
|
+
|
|
13
|
+
```javascript
|
|
14
|
+
import { start } from '@neofaceid/web-sdk';
|
|
15
|
+
|
|
16
|
+
// Inicialize o SDK com seu token de aplicação
|
|
17
|
+
start('seu-token-de-aplicacao', {
|
|
18
|
+
onSuccess: (user) => {
|
|
19
|
+
console.log('Usuário autenticado:', user);
|
|
20
|
+
// user contém: { name, email, documentId }
|
|
21
|
+
},
|
|
22
|
+
onError: (code, message) => {
|
|
23
|
+
console.error('Erro:', code, message);
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Versão
|
|
29
|
+
|
|
30
|
+
O SDK segue o padrão de versionamento semântico (SemVer):
|
|
31
|
+
|
|
32
|
+
```javascript
|
|
33
|
+
import { VERSION, RELEASE_DATE } from '@neofaceid/web-sdk';
|
|
34
|
+
|
|
35
|
+
console.log(`Usando NeoFace ID SDK versão ${VERSION} (lançada em ${RELEASE_DATE})`);
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Histórico de Versões
|
|
39
|
+
|
|
40
|
+
| Versão | Data | Mudanças |
|
|
41
|
+
|--------|------|----------|
|
|
42
|
+
| 1.0.0 | 2023-06-15 | Lançamento inicial do SDK |
|
|
43
|
+
|
|
44
|
+
## Parâmetros
|
|
45
|
+
|
|
46
|
+
### applicationToken (string)
|
|
47
|
+
Token de autenticação da sua aplicação. Obtenha este token no painel de administração do NeoFace ID.
|
|
48
|
+
|
|
49
|
+
### callbacks (object)
|
|
50
|
+
|
|
51
|
+
#### onSuccess (function)
|
|
52
|
+
Chamado quando o reconhecimento facial é bem-sucedido.
|
|
53
|
+
- Parâmetros: `user` (object) - Contém `name`, `email` e `documentId` do usuário reconhecido.
|
|
54
|
+
|
|
55
|
+
#### onError (function)
|
|
56
|
+
Chamado quando ocorre um erro durante o processo.
|
|
57
|
+
- Parâmetros:
|
|
58
|
+
- `code` (string) - Código do erro
|
|
59
|
+
- `message` (string) - Mensagem descritiva do erro
|
|
60
|
+
|
|
61
|
+
### Códigos de Erro
|
|
62
|
+
|
|
63
|
+
| Código | Descrição |
|
|
64
|
+
|--------|-----------|
|
|
65
|
+
| `TOKEN_VALIDATION_ERROR` | Token de aplicação inválido ou expirado |
|
|
66
|
+
| `NO_CAMERA` | Câmera não disponível ou permissão negada |
|
|
67
|
+
| `FACE_NOT_DETECTED` | Nenhum rosto detectado na imagem |
|
|
68
|
+
| `MULTIPLE_FACES` | Múltiplos rostos detectados na imagem |
|
|
69
|
+
| `FACE_NOT_CENTERED` | Rosto não está centralizado no frame |
|
|
70
|
+
| `LIVENESS_CHECK_FAILED` | Verificação de vivacidade falhou |
|
|
71
|
+
| `RECOGNITION_FAILED` | Falha no reconhecimento facial |
|
|
72
|
+
| `NETWORK_ERROR` | Erro de conexão com o servidor |
|
|
73
|
+
| `TIMEOUT` | Tempo limite excedido durante o processo |
|
|
74
|
+
|
|
75
|
+
## Customização
|
|
76
|
+
|
|
77
|
+
O modal de captura facial pode ser customizado através de CSS. Adicione as seguintes classes ao seu CSS:
|
|
78
|
+
|
|
79
|
+
```css
|
|
80
|
+
/* Container principal */
|
|
81
|
+
#neoface-modal-container {
|
|
82
|
+
/* Estilos para o container */
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/* Modal */
|
|
86
|
+
#neoface-modal-container .modal {
|
|
87
|
+
/* Estilos para o modal */
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/* Botões */
|
|
91
|
+
#neoface-modal-container .button {
|
|
92
|
+
/* Estilos para os botões */
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/* Mensagens */
|
|
96
|
+
#neoface-modal-container .message {
|
|
97
|
+
/* Estilos para as mensagens */
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/* Guia de posicionamento */
|
|
101
|
+
#neoface-modal-container .guide {
|
|
102
|
+
/* Estilos para o guia de posicionamento */
|
|
103
|
+
}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Requisitos de Segurança
|
|
107
|
+
|
|
108
|
+
### HTTPS
|
|
109
|
+
O SDK requer uma conexão HTTPS para funcionar. Em ambiente de desenvolvimento, você pode usar `localhost`.
|
|
110
|
+
|
|
111
|
+
### Permissões
|
|
112
|
+
O SDK solicita permissão para acessar a câmera do dispositivo. Esta permissão é essencial para o funcionamento do reconhecimento facial.
|
|
113
|
+
|
|
114
|
+
### HSTS
|
|
115
|
+
Recomendamos configurar HTTP Strict Transport Security (HSTS) no servidor para garantir que todas as conexões sejam feitas via HTTPS.
|
|
116
|
+
|
|
117
|
+
### Privacidade
|
|
118
|
+
O SDK não armazena dados biométricos localmente. Todas as imagens são processadas em tempo real e descartadas após o reconhecimento.
|
|
119
|
+
|
|
120
|
+
## Notas de Performance
|
|
121
|
+
|
|
122
|
+
- **Resolução Adaptativa**: O SDK ajusta automaticamente a resolução da câmera com base nas capacidades do dispositivo.
|
|
123
|
+
- **Compressão JPEG**: As imagens são comprimidas antes do envio para otimizar o uso de banda.
|
|
124
|
+
- **Timeout**: O processo de reconhecimento tem um timeout de 10 segundos para evitar que o usuário fique aguardando indefinidamente.
|
|
125
|
+
|
|
126
|
+
## Compatibilidade
|
|
127
|
+
|
|
128
|
+
### Navegadores Suportados
|
|
129
|
+
- Chrome 60+
|
|
130
|
+
- Firefox 55+
|
|
131
|
+
- Safari 11+
|
|
132
|
+
- Edge 79+
|
|
133
|
+
|
|
134
|
+
### Responsividade
|
|
135
|
+
O SDK é totalmente responsivo e funciona em dispositivos desktop e mobile. Em dispositivos móveis, o modal ocupa a tela inteira para uma melhor experiência do usuário.
|
|
136
|
+
|
|
137
|
+
## Integração com .NET Framework
|
|
138
|
+
|
|
139
|
+
O NeoFace ID SDK Web pode ser facilmente integrado em aplicações web desenvolvidas com .NET Framework 4.8 ou superior. Siga os passos abaixo para implementar a autenticação facial em seu projeto ASP.NET:
|
|
140
|
+
|
|
141
|
+
### 1. Instalação via NuGet
|
|
142
|
+
|
|
143
|
+
Adicione o pacote ao seu projeto .NET:
|
|
144
|
+
|
|
145
|
+
```powershell
|
|
146
|
+
Install-Package NeoFaceId.WebSdk
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Ou adicione a referência ao seu arquivo `.csproj`:
|
|
150
|
+
|
|
151
|
+
```xml
|
|
152
|
+
<PackageReference Include="NeoFaceId.WebSdk" Version="1.0.2" />
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### 2. Configuração no Web.config
|
|
156
|
+
|
|
157
|
+
Adicione a configuração do token no seu arquivo `Web.config`:
|
|
158
|
+
|
|
159
|
+
```xml
|
|
160
|
+
<configuration>
|
|
161
|
+
<appSettings>
|
|
162
|
+
<add key="NeoFaceId:ApplicationToken" value="seu-token-de-aplicacao" />
|
|
163
|
+
</appSettings>
|
|
164
|
+
</configuration>
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### 3. Implementação no Código
|
|
168
|
+
|
|
169
|
+
#### No Controller (C#)
|
|
170
|
+
|
|
171
|
+
```csharp
|
|
172
|
+
using System.Web.Mvc;
|
|
173
|
+
using NeoFaceId.WebSdk;
|
|
174
|
+
|
|
175
|
+
public class AuthenticationController : Controller
|
|
176
|
+
{
|
|
177
|
+
private readonly string _applicationToken;
|
|
178
|
+
|
|
179
|
+
public AuthenticationController()
|
|
180
|
+
{
|
|
181
|
+
_applicationToken = System.Configuration.ConfigurationManager.AppSettings["NeoFaceId:ApplicationToken"];
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
public ActionResult Index()
|
|
185
|
+
{
|
|
186
|
+
return View();
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
[HttpPost]
|
|
190
|
+
public JsonResult AuthenticateUser(string name, string email, string documentId)
|
|
191
|
+
{
|
|
192
|
+
// Processar a autenticação do usuário
|
|
193
|
+
// Este método é chamado após o reconhecimento facial bem-sucedido
|
|
194
|
+
|
|
195
|
+
// Exemplo: Criar sessão do usuário
|
|
196
|
+
Session["UserName"] = name;
|
|
197
|
+
Session["UserEmail"] = email;
|
|
198
|
+
Session["UserDocumentId"] = documentId;
|
|
199
|
+
|
|
200
|
+
return Json(new { success = true });
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
#### Na View (Razor)
|
|
206
|
+
|
|
207
|
+
```html
|
|
208
|
+
@{
|
|
209
|
+
ViewBag.Title = "Autenticação Facial";
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
<div class="container">
|
|
213
|
+
<h2>Autenticação Facial</h2>
|
|
214
|
+
|
|
215
|
+
<button id="startFaceAuth" class="btn btn-primary">Iniciar Autenticação Facial</button>
|
|
216
|
+
|
|
217
|
+
<div id="authResult"></div>
|
|
218
|
+
</div>
|
|
219
|
+
|
|
220
|
+
@section Scripts {
|
|
221
|
+
<script src="~/Scripts/neoface-id-sdk.js"></script>
|
|
222
|
+
<script>
|
|
223
|
+
document.getElementById('startFaceAuth').addEventListener('click', function() {
|
|
224
|
+
// Inicializar o SDK com o token da aplicação
|
|
225
|
+
NeoFaceId.start('@System.Configuration.ConfigurationManager.AppSettings["NeoFaceId:ApplicationToken"]', {
|
|
226
|
+
onSuccess: function(user) {
|
|
227
|
+
// Enviar dados do usuário para o servidor
|
|
228
|
+
$.ajax({
|
|
229
|
+
url: '@Url.Action("AuthenticateUser", "Authentication")',
|
|
230
|
+
type: 'POST',
|
|
231
|
+
data: {
|
|
232
|
+
name: user.name,
|
|
233
|
+
email: user.email,
|
|
234
|
+
documentId: user.documentId
|
|
235
|
+
},
|
|
236
|
+
success: function(response) {
|
|
237
|
+
if (response.success) {
|
|
238
|
+
document.getElementById('authResult').innerHTML =
|
|
239
|
+
'<div class="alert alert-success">Autenticação bem-sucedida!</div>';
|
|
240
|
+
// Redirecionar para a página principal após autenticação
|
|
241
|
+
setTimeout(function() {
|
|
242
|
+
window.location.href = '@Url.Action("Index", "Home")';
|
|
243
|
+
}, 1500);
|
|
244
|
+
}
|
|
245
|
+
},
|
|
246
|
+
error: function() {
|
|
247
|
+
document.getElementById('authResult').innerHTML =
|
|
248
|
+
'<div class="alert alert-danger">Erro ao processar autenticação no servidor.</div>';
|
|
249
|
+
}
|
|
250
|
+
});
|
|
251
|
+
},
|
|
252
|
+
onError: function(code, message) {
|
|
253
|
+
document.getElementById('authResult').innerHTML =
|
|
254
|
+
'<div class="alert alert-danger">Erro: ' + message + '</div>';
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
});
|
|
258
|
+
</script>
|
|
259
|
+
}
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
### 4. Personalização do Modal
|
|
263
|
+
|
|
264
|
+
Para personalizar a aparência do modal de captura facial, adicione os estilos CSS ao seu arquivo `Site.css` ou ao layout principal:
|
|
265
|
+
|
|
266
|
+
```css
|
|
267
|
+
/* Estilos para o modal de captura facial */
|
|
268
|
+
#neoface-modal-container .modal {
|
|
269
|
+
border-radius: 8px;
|
|
270
|
+
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
#neoface-modal-container .button {
|
|
274
|
+
background-color: #007bff;
|
|
275
|
+
color: white;
|
|
276
|
+
border: none;
|
|
277
|
+
padding: 8px 16px;
|
|
278
|
+
border-radius: 4px;
|
|
279
|
+
cursor: pointer;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
#neoface-modal-container .button:hover {
|
|
283
|
+
background-color: #0069d9;
|
|
284
|
+
}
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
### 5. Considerações de Segurança
|
|
288
|
+
|
|
289
|
+
- Sempre valide os dados recebidos do cliente no servidor
|
|
290
|
+
- Utilize HTTPS para todas as comunicações
|
|
291
|
+
- Armazene o token de aplicação de forma segura (nunca no código-fonte)
|
|
292
|
+
- Considere implementar rate limiting para evitar abusos
|
|
293
|
+
- Implemente logs de auditoria para rastrear tentativas de autenticação
|
|
294
|
+
|
|
295
|
+
## Licença
|
|
296
|
+
|
|
297
|
+
MIT
|