A criptografia evita todo vazamento?
Ela é uma camada de proteção. Separe a base dos direitos de uso de chaves do Azure Key Vault. Um aplicativo autorizado comprometido ou dados já recuperados continuam sendo riscos.
ADDRESS VAULT / GETTING STARTED
OneNym Address Vault criptografa endereços de entrega, referenciados por um ID proxy nos sistemas de negócio. Apenas campos permitidos são retornados a aplicativos autorizados.
O portal de compra e o ambiente de avaliação da API na nuvem estão pausados. Entre em contato para integração, avaliação ou retomada. As instruções abaixo valem após a retomada do ambiente.
Assine o plano DEV, entre no portal com a Microsoft e vincule a compra. Solicite a preparação. Confirme organização, contrato, Vault, aplicativos, permissões e retenção antes da aprovação e ativação; teste com dados fictícios. A compra não cria automaticamente um ambiente nem concede acesso a dados. Combine separadamente as condições de produção.
Combine com a OneNym o contrato, a organização, o tenant do Vault, IDs dos aplicativos comercial e de entrega, finalidade, campos e retenção. Obtenha a origem HTTPS da API, API application ID e directory tenant ID. O site e o portal de compra não são a API. Configuração e aprovação são necessárias após a compra.
Use tokens Bearer de aplicativo do Microsoft Entra: Managed Identity no Azure ou chave privada de certificado para obter o token. Não é autenticação de transporte mTLS. O Vault atual confia em um diretório Entra; outra organização não é aceita automaticamente. Mantenha as credenciais no backend.
ONENYM_API_URL=<API HTTPS origin>
ONENYM_API_APPLICATION_ID=<API application ID>
directory tenant ID / merchant client ID / carrier client ID
Authorization: Bearer <application-access-token>
Solicite à OneNym o pacote com o código-fonte do SDK e o exemplo, extraindo-o em uma pasta nova. São necessários .NET 10 SDK, PowerShell 7 e acesso ao NuGet. Os comandos verificam 18 operações com dados fictícios sem conta Azure. Autenticação, SQLite e chaves locais são apenas para demonstração, não para contornar contratos ou autenticação do serviço. Use o SDK incluído; não se pressupõe distribuição pública no NuGet.
dotnet --version
pwsh --version
pwsh -NoProfile -File ./samples/OneNym.Vault.Pilot/run-local.ps1
RESULT passed=True; steps=18; elapsedMs=…; cleanup=True PASS isolated customer quickstart
Cadastre o endereço pela API autenticada. O Vault o criptografa e retorna um ID imprevisível. Evite também cópias em servidores e logs da aplicação.
Guarde o pedido e o ID proxy na sua base. O ID não é o endereço nem uma autorização. Integrar a API não apaga cópias existentes; planeje migração e exclusão.
Vincule pedido, ID, aplicativo destinatário, campos e validade. Emita um token com limite de uso. Possuir o token não basta para acessar.
Autentique o aplicativo e verifique organização, pedido, finalidade, campos, validade, uso e contrato. Os campos autorizados retornam em texto claro; o destinatário também deve controlar armazenamento e logs.
POST /v1/addresses
→ proxyId: nym_…
PUT /v1/shipping-orders
proxyId + orderReference + recipientClientId + fields + expiresAt
→ orderId + version
POST /v1/shipping-orders/{orderId}/grants
orderVersion + expiresAt + maxUses
→ token: nrt_…
POST /v1/retrieval-grants/redeem
Authorization: Bearer <application-access-token>
X-OneNym-Retrieval-Token: <retrieval-token>
orderId + orderReference + purpose + fields
→ permitted fields
Estes exemplos explicam o projeto. Nomes de campos e valores são ilustrativos, não uma referência executável de API.
A implementação descriptografa o endereço inteiro na memória e retorna somente os campos permitidos. Não é criptografia por campo. Destinatários devem proteger o texto recebido; clientes também devem gerenciar logs e armazenamento anteriores ao cadastro.
Toda operação exige Bearer de aplicativo e permissões. O resgate exige também X-OneNym-Retrieval-Token. Use JSON UTF-8 e finalidade shipping. GET, revogação e DELETE não têm corpo. O trecho pressupõe merchant e carrier autenticados, persistedKey salva antes do cadastro e orderReference sem dados pessoais. O pacote contém o aplicativo executável.
| Operação | Método e caminho | Sucesso |
|---|---|---|
| Cadastrar endereço | POST /v1/addressesRegisterAsync(…) | 201 |
| Obter campos permitidos | POST /v1/addresses/{proxyId}/retrieveReadAsync(…) | 200 |
| Consultar ID e versão do pedido | GET /v1/shipping-orders/by-reference/{orderReference}FindOrderAsync(…) | 200 |
| Consultar vínculo atual | GET /v1/shipping-orders/by-reference/{orderReference}/bindingInspectOrderAsync(…) | 200 |
| Criar ou alterar vínculo do pedido | PUT /v1/shipping-ordersBindAsync(…) | 200 |
| Emitir token de entrega | POST /v1/shipping-orders/{orderId}/grantsIssueAsync(…) | 201 |
| Resgatar token de entrega | POST /v1/retrieval-grants/redeemRedeemAsync(…) | 200 |
| Revogar um token | POST /v1/retrieval-grants/{grantId}/revokeRevokeGrantAsync(…) | 204 |
| Revogar endereço | POST /v1/addresses/{proxyId}/revokeRevokeAsync(…) | 204 |
| Excluir endereço | DELETE /v1/addresses/{proxyId}DeleteAsync(…) | 204 |
using OneNym.Vault.Client;
var fields = new[] { "recipientName", "postalCode", "addressLine1" };
var registration = await merchant.RegisterAsync(new CreateAddress {
Address = new AddressData {
RecipientName = "Demo Recipient", PostalCode = "000-0000",
CountryCode = "JP", AddressLine1 = "Dummy address",
Locality = "Demo city"
},
RetainUntil = DateTimeOffset.UtcNow.AddDays(1)
}, persistedKey);
var order = await merchant.BindAsync(new BindOrder(
orderReference, registration.ProxyId, carrierClientId, fields,
DateTimeOffset.UtcNow.AddHours(1)));
var grant = await merchant.IssueAsync(
order.OrderId, order.Version, DateTimeOffset.UtcNow.AddMinutes(5));
var address = await carrier.RedeemAsync(
order.OrderId, orderReference, grant.Token, fields);
Os sete campos estão abaixo. countryCode contém duas letras maiúsculas; o corpo JSON admite 16.384 bytes. A retenção máxima inicial é de 30 dias, conforme a configuração. Tokens vencem até a validade do endereço e pedido, no máximo 15 minutos após a emissão. API maxUses: 1–5; SDK padrão: um. A validade usa segundos UTC e exclui o instante final. Não se verifica existência nem possibilidade de entrega do endereço.
recipientName 1–200
postalCode 1–32
countryCode [A-Z]{2}
addressLine1 1–300
addressLine2 null / 0–300
locality 1–100
region null / 0–100
Cadastre outro endereço em vez de editar o existente. Consulte o vínculo, passe sua Version como expectedVersion, altere o pedido e emita um token para a nova versão. A mudança bloqueia todos os tokens das versões anteriores. Emitir mais tokens na mesma versão não revoga os existentes. Verifique outros pedidos e a retenção antes de excluir o endereço antigo. Texto já entregue não pode ser recolhido.
var current = await merchant.InspectOrderAsync(orderReference);
var changed = await merchant.BindAsync(new BindOrder(
orderReference, newRegistration.ProxyId, carrierClientId, fields,
newOrderExpiry, ExpectedVersion: current.Version));
var newGrant = await merchant.IssueAsync(
changed.OrderId, changed.Version, newGrantExpiry);
// BindOrder = complete desired binding, not a partial patch.
// Keep unknown prior outcomes for reconciliation; never blindly retry.
O SDK não repete automaticamente. Timeout, cancelamento ou 503 podem ocorrer após gravação ou consumo do token. Confira o resultado de cada operação antes de repetir.
Informe status HTTP, horário e trace ID se disponível. Não envie endereços, Bearer, chaves privadas de certificado ou tokens de entrega ao suporte.
Cadastro, consulta por campos, pedidos versionados, emissão e usos de tokens, revogação, exclusão e limpeza por validade estão implementados. SDK, SQL isolado e Azure real com MI, Key Vault, Azure SQL e histórico verificam operação normal, recusas, concorrência e recuperação. Compra e consentimento reais de outra organização e notificações Microsoft reais de suspensão/reativação ainda precisam de aceite. Os testes não estabelecem SLA nem capacidade para todas as configurações.
Ela é uma camada de proteção. Separe a base dos direitos de uso de chaves do Azure Key Vault. Um aplicativo autorizado comprometido ou dados já recuperados continuam sendo riscos.
O ID referencia um endereço. O token acrescenta condições para pedido, aplicativo e campos específicos. Proteja ambos. O token de uso único é consumido na recuperação bem-sucedida; repetir a mesma resposta não é garantido. Se a resposta se perder, confira o estado antes de emitir outro.
Revogar bloqueia novas consultas. Excluir remove o conteúdo criptografado e a chave de dados encapsulada do registro ativo, não apaga imediatamente cópias ou backups. Suspender bloqueia consultas normais, mantendo a limpeza pelo proprietário. Combine retenção de backups e reaplicação de exclusões na restauração.
O produto DEV atual é uma API de endereços no Azure. Envio de e-mail, imagens de identidade, OCR e AWS KMS não estão incluídos. Exemplos gerais de arquitetura não são funções entregues. Confirme armazenamento, operação e integrações na implantação.