Pular para o conteúdo principal

Certificados de atributo

Um certificado de atributo não vincula um par de chaves ao titular: ele atesta uma característica do titular, como uma identidade profissional (PrivateID) ou uma Carteira de Identificação Estudantil (CIE).

Antes de começar​

Certificados de atributo são emitidos por uma AC configurada para emiti-los, que não é a AC que emite certificados de chave pública: os samples guardam o id dela em uma configuração separada, attributeCaId. Os operadores podem criar essa AC no dashboard.

TODO(docs): nenhum artigo explica como criar uma AC para certificados de atributo.

Fluxo​

  1. Crie o pedido na AC de atributo, com kind igual a Attribute e os parâmetros do formato do certificado.
  2. Emita o certificado sem CSR, já que um certificado de atributo não tem par de chaves próprio.
  3. Guarde o conteúdo do certificado.
FormatoEndpoint do pedidoParâmetros obrigatórios
Carteira de Identificação Estudantil (CIE)POST /api/orders/ciename, registrationNumber, degree, course e institution (name, city, state)
PrivateIDPOST /api/orders/private-idname, cpf, idNumber

Um pedido CIE também recebe eea, cpf, birthDate, idNumber, idIssuer e idIssuerState. Desde o Amplia 4.15.0, os operadores também podem criar pedidos CIE em um formulário do dashboard. TODO(docs): o que significam os campos de CIE e PrivateID (por exemplo, eea).

Exemplo​

O único sample é em PHP. Ele cria um pedido CIE e emite o certificado com um CSR null:

use Lacuna\Amplia\CreateOrderRequest;
use Lacuna\Amplia\CertificateKinds;
use Lacuna\Amplia\CieCertificateParameters;
use Lacuna\Amplia\CieInstitution;

$client = Util::getAmpliaClient();
$createOrderRequest = new CreateOrderRequest();
$createOrderRequest->caId = getConfig()['amplia']['attributeCaId'];
$createOrderRequest->validityEnd = Util::getDateYearsFromNow(2);
$createOrderRequest->kind = CertificateKinds::ATTRIBUTE;
$parameters = new CieCertificateParameters();
$parameters->name = $name;
$parameters->cpf = $cpf;
$parameters->eea = $eea;
$parameters->degree = $degree;
$parameters->course = $course;
$parameters->registrationNumber = $registrationNumber;

$institution = new CieInstitution();
$institution->name = $institutionName;
$institution->city = $institutionCity;
$institution->state = $institutionState;
$parameters->institution = $institution;

$createOrderRequest->parameters = $parameters;
$order = $client->createOrder($createOrderRequest);
$cert = $client->issueCertificate($order->getId(), null);
$fileId = StorageMock::store($cert->getContentRaw(), '.ac');

O cliente PHP envia o CSR null para POST /api/v2/certificates, como para qualquer outro certificado; nenhuma das bibliotecas cliente tem um método próprio para certificados de atributo. Um certificado de atributo não tem extensão de arquivo padrão: o sample o guarda como .ac.

Usar o certificado​

O PKI SDK decodifica, valida e emite certificados de atributo X.509 em aplicações .NET. Certificados de atributo podem ser revogados como qualquer outro.

Veja também​

Ver em Markdown