Jump to content

Recommended Posts

Posted

No ambiente de testes e rápido, provavelmente e mais rápido que o da multicert, pelo simples facto de não enviar o PDF para lá só o hash, mas diria menos de 1segundo, mas não tirei tempos.

Posted
2 minutes ago, laboss said:

No ambiente de testes e rápido, provavelmente e mais rápido que o da multicert, pelo simples facto de não enviar o PDF para lá só o hash, mas diria menos de 1segundo, mas não tirei tempos.

Como assim? Podes explicar o processo sucintamente? 

Quem assina o documento é o produtor do software com o hash recebido pela SAFE? 

Posted (edited)

Basicamente e isto, saltando a parte da autenticação, etc.

  1. Geras o PDF sem assinatura
  2. Geras o Hash do PDF em SHA-256
    • Aqui tens de ter cuidado porque já tens de ter o container da assinatura no PDF, se não quando meteres o hash deles no PDF tb vais meter o container e já não fica válido
  3. Invocas o serviço para pedir autorização assinar
    • Aqui vais ter de enviar o hash gerado no passo 2
  4. O passo 3 devolve um SAD (Basicamente é um ID com a autorização)
  5. Invocas o serviço de assinatura com o SAD  e com os hash novamente
  6. O serviço vai-te devolver a assinatura do teu HASH que basicamente é um novo HASH
  7. Tens de colocar o HASH recebido embebido no PDF  (No container que criaste ao gerar o 1º HASH)
  8. Ta feito

No serviço deles nunca envias o PDF, trabalhas com o HASH, se conheceres o da digitalsign e parecido nas partes dos hash.

A parte mais complicada de tudo isto para mim, foi gerar o Hash do PDF e depois colocar o HASH recolhido no PDF, o resto faz-se bem.

Edited by laboss
  • Vote 2
Posted (edited)
On 10/27/2022 at 3:30 PM, laboss said:
  1. Geras o Hash do PDF em SHA-256
    • Aqui tens de ter cuidado porque já tens de ter o container da assinatura no PDF, se não quando meteres o hash deles no PDF tb vais meter o container e já não fica válido
  2. Tens de colocar o HASH recebido embebido no PDF  (No container que criaste ao gerar o 1º HASH)

Não percebi a situação de gerar o Hash do PDF. O que é que isto significa? É literalmente o que estás a dizer, ou seja, pegar no ficheiro criado e criar um hash SHA-256 dele? 

Aproveito para pedir, a ti ou a outra pessoa que não se importe, exemplo de código de integração já realizada com sucesso. Pode ser em qualquer linguagem, assim que terminar a minha integração com o SAFE colocarei aqui neste tópico a versão em PHP.

Edited by bioshock
Posted
11 minutes ago, samuquinha said:

Algum exemplo de obtenção do token (de uma forma transparente para o utilizador)? o que consigo é uma página com a CMD...

Para depois invocar o serviço de signHash usando esse token.

Segundo percebi da documentação na diagonal:

  1. Redireccionar o utilizador para o gov. para efectuar a autenticação
  2. Invocar o serviço "FA" diversas vezes para obter privilégios (scopes) etc
  3. Este serviço, no final, vai-te devolver um token que vais utilizar para assinar <--- ??

Eu estou à espera que me enviem o CLIENT ID, creio que é necessário para efectuar o 1º passo.

Posted

Fazes a autenticação com o CMD, depois pedes o scopes do SAFE, e retornado o ID, depois nao precisas mais de autenticar com o CMD, só passado 3 meses quando fores gerar a nova assinatura SAFE.

Posted
3 minutos atrás, bioshock disse:

Segundo percebi da documentação na diagonal:

  1. Redireccionar o utilizador para o gov. para efectuar a autenticação
  2. Invocar o serviço "FA" diversas vezes para obter privilégios (scopes) etc
  3. Este serviço, no final, vai-te devolver um token que vais utilizar para assinar <--- ??

Eu estou à espera que me enviem o CLIENT ID, creio que é necessário para efectuar o 1º passo.

Obrigado,

E o client_id não é enviado apenas para o ambiente de produção?

A referência que vejo para ambiente de testes é client_id=123456789

Posted
1 minuto atrás, laboss disse:

Fazes a autenticação com o CMD, depois pedes o scopes do SAFE, e retornado o ID, depois nao precisas mais de autenticar com o CMD, só passado 3 meses quando fores gerar a nova assinatura SAFE.

Mas em ambiente de testes o client_id é 123456789, como continuar a autenticação (por CMD não dára para receber sms, por CC também não me parece)?

Ou tem que se fazer algum registo para pedir um client_id?

Thanks

Posted (edited)
12 minutes ago, samuquinha said:

Obrigado,

E o client_id não é enviado apenas para o ambiente de produção?

A referência que vejo para ambiente de testes é client_id=123456789

8 minutes ago, samuquinha said:

Mas em ambiente de testes o client_id é 123456789, como continuar a autenticação (por CMD não dára para receber sms, por CC também não me parece)?

Ou tem que se fazer algum registo para pedir um client_id?

Thanks

Pois, eu vi esse client_id na documentação, mas quando o testo o URL devolve sempre erro na página do .gov.

Se meter um client_id válido (e eu sei de um válido) já funciona, independentemente se utilizar o sub-domínio preprod. ou o de produção final.

Estava à espera que me respondessem da SAFE, já enviei o contrato assinado para lá.

Edited by bioshock
Posted
Agora, laboss disse:

Eu tive de pedir as credenciais

E como se faz esse pedido? Pelo que li apenas depois de enviar as evidências que está tudo funcional, é que enviam as credenciais... ou estou enganado?

Posted

Na consulta dos valores dos atributos o que me está a ser devolvido é o seguinte:

[
    ['name' => 'http://interop.gov.pt/MDC/Cidadao/NIC', 'value' => '...', 'state' => 'Available'],
    ['name' => 'http://interop.gov.pt/MDC/Cidadao/NomeProprio', 'value' => '...', 'state' => 'Available'],
    ['name' => 'http://interop.gov.pt/MDC/Cidadao/NomeApelido', 'value' => '...', 'state' => 'Available'],
    ['name' => 'http://interop.gov.pt/MDC/Cidadao/DataValidade', 'value' => '07-08-2031', 'state' => 'Available'],
    ['name' => 'http://interop.gov.pt/MDC/Cidadao/DataNascimento', 'value' => '...', 'state' => 'Available'],
    ['name' => 'http://interop.gov.pt/SAFE/createSignatureAccount?enterpriseNipc=....', 'value' => '{"error":"Bad Request","error_description":"No response found for this OAuthToken"}', 'state' => 'Available']
]

Basicamente só me está a dar erro no scope CreateSignatureAccount, que é o mais importante pois presumo que seja aqui que me seja devolvido o token para ser utilizado na assinatura dos documentos.

O URL executado para obter os valores dos atributos:

$url = "https://preprod.autenticacao.gov.pt/OAuthResourceServer/Api/AttributeManager?token={$token}&authenticationContextId={$authenticationContextId}";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$response = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

$response = json_decode($response);

Alguma ideia do que está a falhar?


 

Posted (edited)
1 hour ago, bioshock said:

Na consulta dos valores dos atributos o que me está a ser devolvido é o seguinte:

[
    ['name' => 'http://interop.gov.pt/MDC/Cidadao/NIC', 'value' => '...', 'state' => 'Available'],
    ['name' => 'http://interop.gov.pt/MDC/Cidadao/NomeProprio', 'value' => '...', 'state' => 'Available'],
    ['name' => 'http://interop.gov.pt/MDC/Cidadao/NomeApelido', 'value' => '...', 'state' => 'Available'],
    ['name' => 'http://interop.gov.pt/MDC/Cidadao/DataValidade', 'value' => '07-08-2031', 'state' => 'Available'],
    ['name' => 'http://interop.gov.pt/MDC/Cidadao/DataNascimento', 'value' => '...', 'state' => 'Available'],
    ['name' => 'http://interop.gov.pt/SAFE/createSignatureAccount?enterpriseNipc=....', 'value' => '{"error":"Bad Request","error_description":"No response found for this OAuthToken"}', 'state' => 'Available']
]

Basicamente só me está a dar erro no scope CreateSignatureAccount, que é o mais importante pois presumo que seja aqui que me seja devolvido o token para ser utilizado na assinatura dos documentos.

O URL executado para obter os valores dos atributos:

$url = "https://preprod.autenticacao.gov.pt/OAuthResourceServer/Api/AttributeManager?token={$token}&authenticationContextId={$authenticationContextId}";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$response = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

$response = json_decode($response);

Alguma ideia do que está a falhar?


 

Estás a usar o token correto?

Quando o FA devolve o token, vem neste formato (exemplo):

https://preprod.autenticacao.gov.pt/OAuth/Authorized#access_token=12345678453534534&token_type=bearer&expires_in=604800

Deverás interceptar o acess_token e usá-lo.

De que forma obtiveste o authenticationContextID?

 

 

 

 

 

 

Edited by zeph
Posted
16 minutes ago, zeph said:

Estás a usar o token correto?

Quando o FA devolve o token, vem neste formato (exemplo):

https://preprod.autenticacao.gov.pt/OAuth/Authorized#access_token=12345678453534534&token_type=bearer&expires_in=604800

Deverás interceptar o acess_token e usá-lo.

4 minutes ago, laboss said:

Ativaste os atributos profissionais nesse utilizador, e já foi validado por eles?

Mandei email à uns minutos para lá, disseram que tinha haver com os atributos profissionais, que também tem de ser activados no pré-produção. Estou a aguardar que activem, portanto presumo que deva resolver.

Pensei que este processo não obrigasse a intervenção do utilizador final 😔

Posted
2 minutos atrás, bioshock disse:

Mandei email à uns minutos para lá, disseram que tinha haver com os atributos profissionais, que também tem de ser activados no pré-produção. Estou a aguardar que activem, portanto presumo que deva resolver.

Pensei que este processo não obrigasse a intervenção do utilizador final 😔

Eu fiz o processo no site

 

https://pprwww.autenticacao.gov.pt/web/guest/area-privada/atributos-profissionais

 

Pedi o Administrador, Gerente, ou Diretor depois ficou pendente no separador "Consulta de Processos", quando ficou ai eu mandei um mail e eles ativaram no dia seguinte.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.