Aqui você encontra as documentações necessárias para integrar com as APIs, Bibliotecas e Módulos.
Produção: https://certificado.vidaas.com.br
Homologação: https://hml-certificado.vidaas.com.br
Demonstração: https://demo-certificado.vidaas.com.br
Para utilizar os serviços de autorização e assinatura é obrigatório cadastrar sua aplicação junto ao Valid PSC, este serviço para cadastro é realizado uma única vez. Abaixo a descrição do serviço para cadastro de aplicação.
Solicitação de cadastro:
Exemplo Request:
{
"name": "App Demo",
"comments": "App Demo",
"redirect_uris": [https://valid.com.br/],
"email": ""
}
Exemplo Response:
{
"status": "success",
"message": "New Client Application registered with Sucess",
"client_id": "4c9fb552-0387-4e5f-8727-6676fa88dce1",
"client_secret": "Ny2n3hq67gQEFvH7"
}
Observação:
Os parâmetros de retorno “client_id” e “client_secret” devem ser armazenadas na sua aplicação que serão parâmetros nas chamadas de outros serviços para autorização e assinatura.
Não incluir no cadastro de “redirect_uris“ o “push://” pois é gerado automaticamente.
Antes de chamar a aplicação para autenticação, você pode verificar se um CPF ou CNPJ existe no Valid PSC e listar os certificados disponíveis
para ele.
Solicitação do serviço:
Exemplo Request:
{
"client_id": "4c9fb552-0387-4e5f-8727-6676fa88dce1",
"client_secret": "Ny2n3hq67gQEFvH7",
"user_cpf_cnpj": "CPF",
"val_cpf_cnpj": "12345678901"
}
Exemplo Response:
2.1 - Status S
{
"status": "S",
"slots": [
{
"slot_alias": "a4c2b5bc-ee20-492a-9908-
45d892f2e808",
"label": "e-CPF A3 em nuvem gold"
},
{
"slot_alias": "8e8353d5-e786-4822-9666-
603bd966ee58",
"label": "e-CPF A3 em nuvem gold"
}
]
}
2.2 - Status N
{
"status": "N"
}
Observação:
Status de retorno indicando “S” para resultado positivo ou “N” caso contrário;
Serviço para obter do titular autorização de uso da sua chave privada, com solicitação de fatores de autenticação.
AUTHORIZATION
Solicitação de Autorização:
Exemplo Request:
PATH_BASE/oauth/authorize?client_id=4c9fb552-0387-4e5f-8727-6676fa88dce1&code_challenge=E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstwcM&code_challenge_method=S256&response_type=code&scope=signature_session&login_hint=12345678901&lifetime=900&redirect_uri=http://valid.com.br
Exemplo Request com PUSH:
PATH_BASE/oauth/authorize?client_id=4c9fb552-0387-4e5f-8727-6676fa88dce1&code_challenge=E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstwcM&code_challenge_method=S256&response_type=code&scope=signature_session&login_hint=12345678901&lifetime=900&redirect_uri=push://
Exemplo Response:
<REDIRECT_URI>?code=2b15b0e1-bbf2-4e55-99b8-93cf824576b1&state=NONE
Exemplo Response com PUSH:code=d402d71c-0918-43ca-a07d-62597f559497
Observação:
Para o modo "PUSH NOTIFICATION" deverá realizar o Passo AUTHENTICATIONS antes do Passo 4 - Token.
Para autorização via QRCODE
Após solicitação de autorização, redireciona para o titular autorizar o uso
Página de Autorização para o titular da chave privada
O Valid PSC irá retornar com HTTP 302, solicitando redirecionamento para a página de autenticação OAuth para que o titular da chave privada
possa fazer autenticação via QRCODE. A página com o QRCODE ficará aguardando por 2 minutos o titular da chave privada autenticar com o
aplicativo ViDaas.
Autenticação pelo titular da chave privada
O titular da chave privada com uso do aplicativo ViDaas efetua a leitura do QRCODE autorizando a aplicação cliente na versão WEB o uso do
certificado digital.
Caso o titular possua mais de um certificado, será apresentado os certificados para que o titular faça a escolha do certificado que será
autorizado o uso.
Resposta da Requisição de Código de Autorização (Receive Code)
Ao autorizar o uso pelo titular, o Valid PSC emite um código de autorização com tempo de validade curto e retorna para aplicação cliente com
uma URI de redirecionamento contendo parâmetros no componente http query, usando o formato "application/x-www- form-urlencoded":
Caso o titular não autorize o uso, o Valid PSC aguardará o tempo de expiração do QRCODE e irá exibir a mensagem conforme imagem abaixo:
Solicitação de Autenticação:
Path : <URI-base>/valid/api/v1/trusted-services/authentications
Método HTTPS: GET
Parâmetros da requisição: formato "application/x-www-form-urlencoded"
code: obrigatório, deve conter código retornado do Serviço de Solicitação de Autorização (Authorization);
Exemplo de Solicitação de Autenticação
<URI-base>/valid/api/v1/trusted-services/authentications?code=d402d71c-0918-43ca-a07d-62597f559497
Exemplo de Resposta
{
"authorizationToken":
"eyJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwiYWxnIjoiZGlyIn0..
nYWhIcwNUH_22Upe1BSUTQ.
oXT7UF2Mvtm5C6CjpdEGxcL_9XM86oNh4w0iGgUkQVGBla0CNnNW0_QbGx73Ldnu81kydOuz
tSj3wfWUQf3t7IftvVMuyfdigW4_
lz1LcC2q3p9N32iSEGb5VPzzSKqiZGa3asfMgEPjr3xYo7Lo3biTtbVPrChPLHslMi--
b7DXXOIZ23N2R5bCT2_h6pj6PyBnXsEWl5uaF9v5PSXsQ.ZuLdlRZkfGBoqrxbj5tgTg",
"redirectUrl": "push://<URI gerada no cadastro de aplicação>?
code=8b1bde77-3647-4d76-1289-a2ec97c75a4d&state=NONE"
}
Observação:
Para o método Authorize QRCODE (sem o push://) deve-se alterar o campo "code" pelo "code" retornado na URL.
Para o método Authorize PUSH deve-se alterar o campo "code" pelo "authorizationToken" retornado no Authentications.
Exemplo Request:
{
"grant_type": "authorization_code",
"client_id": "4c9fb552-0387-4e5f-8727-6676fa88dce1",
"client_secret": Ny2n3hq67gQEFvH7,
"code": "<authorization code>",
"code_verifier": "dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk"
}
Exemplo Response:
{
"access_token": "eyJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwiYWxnIjoiZGlyIn0..
2tk9rh8yisesxBm1tNNcUg.z6VZu-HZJka9EDBSAgDrtZWgYn5je__
nCc6uOOrl3wsCrzWT5G0SMUHpuX3McdBk0uIJ85cMOe3MFn75Pe
5mfhlmdLtRUtnX_tJmg8rW6dU7mg4nR4XlyMmWYy-
Yep_2dIM2xni0sWUplPxUCLg9dl7_aeVTB_U9TmsXOYCJNMYSJfjPErsthUNHWJHzUIOg-
2Otj9gkq_EBLr0jYVWCw.IPOs5b_o6yKmz2Q24zYYvA",
"token_type": "Bearer",
"expires_in": 900,
"scope": "signature_session",
"authorized_identification": "12345678901",
"authorized_identification_type": "CPF"
}
Observação:
A aplicação suporta os seguintes signature_format:
RAW, CMS, CAdES_AD_RT, CAdES_AD_RB, PAdES_AD_RT, PAdES_AD_RB, RAW_DIGESTED_DATA.
e padding_method:
NONE, PKCS1V1_5, PSS.
Exemplo Request:
{
"hashes": [
{
"id": "dummy assinatura",
"alias": "dummy.pdf",
"hash": "FqulOTrXLABB9WAK08LFLsQ3ovDH/Aj638PA/pZB16M=",
"hash_algorithm": "2.16.840.1.101.3.4.2.1",
"signature_format": "RAW"
}
]
}
Exemplo Response:
{
"signatures": [
{
"id": "dummy assinatura",
"raw_signature": "my signature base64"
}
],
"certificate_alias": "CERTIFICADO TESTE"
}