Jump to content

Recommended Posts

Posted
5 minutes ago, laboss said:

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.

Sim, também fiz. Mas tive de mandar agora um email para eid@ama.pt a pedir que autorizem.

1 minute ago, zeph said:

No meu caso demorou 5 dias a ficar ativo

Minha nossa senhora. 🤣

Posted

Que sistema confuso!

Estou completamente "atarantado" com isto. Não entendo nada do que é necessário fazer nem como testar. Alguém me consegue dar algumas indicações?

Eu já tenho o registo feito em pré-produção (https://pprwww.autenticacao.gov.pt/area-privada/atributos-profissionais) e atributos profissionais de "Assinatura de faturas eletrónicas".

Também tenho um certificado caducado em "Assinatura de Facturas" que devo ter criado no ano passado quando iniciei este processo que entretanto parei.

Já criei um novo certificado e este já está activo.

Agora não sei como testar porque não estou a entender nada do processo e os manuais disponibilizados são uma tristeza.

Posted (edited)

Para testar podes testar no site deles

https://pprwww.autenticacao.gov.pt/area-privada/assinatura/pdf

Depois na api é +/- isto

Em 27/10/2022 às 15:30, laboss disse:

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.

A parte de criar a conta pela API é basicamente é gerares a conta SAFE para teres acesso ao token da mesma.

 

Para testares os PDF's assinados existe um site deles

https://validador.autenticacao.gov.pt/validation

Edited by laboss
Posted

E onde é que está a documentação sobre esses serviços?

Carreguei os ficheiros json que estão na pasta API do Github, para o site https://editor.swagger.io/ mas não estou a entender muito bem.

Tem lá 2 ficheiros json um "SAFE-AccountManagementService.json" e outro "SAFE-SignatureService.json".

O de assinatura tem o método /Info que não pede parâmetro nenhum por isso não sei como por a funcionar. O /SignHash suponho que seja o que tem que se chamar mas não estou a entender o que são os parametros "SAFEAuthorization" e "Authorization". Onde obtenho estes parametros e como estão relacionados com o certificado de teste que gerei no portal?

Posted

Ta tudo aqui:

SAFE - Signature Service

  1. /v2/credentials/authorize (Pedes a assinatura)
  2. /v2/signatures/signHash (Recolhes os hash para colocares no PDF)

Todos as chamadas tens de colocar um Authorization

 

Basicamente é isto

curl --location --request POST 'https://safe.autenticacao.gov.pt/info' \
--header 'Authorization: Basic XXXXXXXXXXXXXXXXXXXXXXXX'

Este basic são dados que eles te enviaram

Exemplo de um autorize

curl --location --request POST 'https://safe.autenticacao.gov.pt/credentials/authorize' \
--header 'SAFEAuthorization: Bearer xxxxxxxxxxxxx' \
--header 'Authorization: Basic XXXXXXXXXXXXXXXXXXXXXXXX' \
--header 'Content-Type: application/json' \
--data-raw '{
  "numSignatures": 1,
  "hashes": [
    "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  ],
  "clientData": {
    "processId": "121212c-456e-4abc-9efb-d774936ce749",
    "documentNames": [
      "documentName1"
    ],
    "clientName": "clientTest"
  },
  "credentialID": ""
}'

 

  • Vote 1
Posted
On 10/31/2022 at 3:34 PM, bioshock said:

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á.

Os dados de teste que usei foram:  creationClientName = clientTest, clientID = 123456789 e o NIPC = 500000000 (pedi os atributos para esse NIF de testes)

 

Exemplo:

 

https://preprod.autenticacao.gov.pt/oauth/askauthorization?client_id=123456789&
scope=http://interop.gov.pt/MDC/Cidadao/NomeProprio%20
http://interop.gov.pt/MDC/Cidadao/NIC%20
http://interop.gov.pt/MDC/Cidadao/DocType%20
http://interop.gov.pt/MDC/Cidadao/DocNumber%20
http://interop.gov.pt/MDC/Cidadao/NomeProprio%20
http://interop.gov.pt/MDC/Cidadao/NomeApelido%20
http://interop.gov.pt/MDC/Cidadao/DataValidade%20
http://interop.gov.pt/MDC/Cidadao/DataNascimento%20
http://interop.gov.pt/SAFE/createSignatureAccount?enterpriseNipc=500000000
	$enterpriseAdditionalInfo=mais_contas_para_o_mesmo_NIF
	$email=teste@test.com
	$signaturesLimit=1000
	$creationClientName=clientTest
&response_type=token

 

  • Vote 1
Posted
On 11/7/2022 at 6:21 PM, desconfiado said:

No "Authorization" deve ser enviado "Basic Y2xpZW50VGVzdDpUZXN0" que corresponde ás credenciais clientTest:Test enconded em Base64, certo?

Está-me a dar erro.

 

Correto.

Qual é o método?

 

Posted (edited)
Em 07/11/2022 às 18:23, zeph disse:

Correto.

Qual é o método?

 

/credentials/info

Curl

curl -X 'POST' \
  'https://pprsafe.autenticacao.gov.pt/credentials/info' \
  -H 'accept: application/json' \
  -H 'SAFEAuthorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJTQUZFIiwic3ViIjoiQkkwODg3NjA0MCIsImF1ZCI6IkJJMDg4NzYwNDA1MDI5NzY3NzIiLCJpYXQiOjE2Njc4NDA0MzEsImV4cCI6MTY2NzkyNjgzMSwidG9rZW5HdWlkIjoiMTdhOWNhMzktOTJhMS00MmZhLThkYzctYmIyNWU3M2I3YWQ5IiwiYWNjZXNzVG9rZW4iOnRydWUsInNhaWQiOiJ6QWVhMHVBbXE5TndhTXRtSkk2bFBIaVhyV2ErNGxBbmVSUDd4TFViWSthaGE5T1BWQVNoUFE9PSJ9.Mtczlr3PvwLLWfGYX515q3UPF888UmxOzYtfa8lrAlE' \
  -H 'Content-Type: application/json' \
  -d '{
  "credentialID": "caeedd36-24cc-4a36-b855-dff6a80103f9",
  "certificates": "chain",
  "clientData": {
    "processId": "a015722c-456e-4abc-9efb-d774936ce749",
    "clientName": "clientTest"
  }
}'

 

Editei o ficheiro json e alterei o endpoint para o de teste https://pprsafe.autenticacao.gov.pt/

Edited by desconfiado
Posted
On 11/7/2022 at 6:26 PM, desconfiado said:

/credentials/info

Curl

curl -X 'POST' \
  'https://pprsafe.autenticacao.gov.pt/credentials/info' \
  -H 'accept: application/json' \
  -H 'SAFEAuthorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJTQUZFIiwic3ViIjoiQkkwODg3NjA0MCIsImF1ZCI6IkJJMDg4NzYwNDA1MDI5NzY3NzIiLCJpYXQiOjE2Njc4NDA0MzEsImV4cCI6MTY2NzkyNjgzMSwidG9rZW5HdWlkIjoiMTdhOWNhMzktOTJhMS00MmZhLThkYzctYmIyNWU3M2I3YWQ5IiwiYWNjZXNzVG9rZW4iOnRydWUsInNhaWQiOiJ6QWVhMHVBbXE5TndhTXRtSkk2bFBIaVhyV2ErNGxBbmVSUDd4TFViWSthaGE5T1BWQVNoUFE9PSJ9.Mtczlr3PvwLLWfGYX515q3UPF888UmxOzYtfa8lrAlE' \
  -H 'Content-Type: application/json' \
  -d '{
  "credentialID": "caeedd36-24cc-4a36-b855-dff6a80103f9",
  "certificates": "chain",
  "clientData": {
    "processId": "a015722c-456e-4abc-9efb-d774936ce749",
    "clientName": "clientTest"
  }
}'

 

Editei o ficheiro json e alterei o endpoint para o de teste https://pprsafe.autenticacao.gov.pt/

Tens de enviar as duas authorizações, SAFEAuthorization(Bearer) e Authorization(Basic) 

 

--header 'SAFEAuthorization: Bearer xpto' \

--header 'Authorization: Basic xpto' \

On 11/7/2022 at 6:42 PM, desconfiado said:

Faltava-me o "CredentialID" do certificado. Coloquei o correcto mas continua a dar erro.

O "processId" é apenas um GUID qualquer, certo?

Sim

Posted
On 11/7/2022 at 6:08 PM, zeph said:

Os dados de teste que usei foram:  creationClientName = clientTest, clientID = 123456789 e o NIPC = 500000000 (pedi os atributos para esse NIF de testes)

Exemplo:

https://preprod.autenticacao.gov.pt/oauth/askauthorization?client_id=123456789&
scope=http://interop.gov.pt/MDC/Cidadao/NomeProprio%20
http://interop.gov.pt/MDC/Cidadao/NIC%20
http://interop.gov.pt/MDC/Cidadao/DocType%20
http://interop.gov.pt/MDC/Cidadao/DocNumber%20
http://interop.gov.pt/MDC/Cidadao/NomeProprio%20
http://interop.gov.pt/MDC/Cidadao/NomeApelido%20
http://interop.gov.pt/MDC/Cidadao/DataValidade%20
http://interop.gov.pt/MDC/Cidadao/DataNascimento%20
http://interop.gov.pt/SAFE/createSignatureAccount?enterpriseNipc=500000000
	$enterpriseAdditionalInfo=mais_contas_para_o_mesmo_NIF
	$email=teste@test.com
	$signaturesLimit=1000
	$creationClientName=clientTest
&response_type=token

E isto significa que consegues testar as assinaturas sem ter a aprovação da @ama.pt (no que toca ao endpoint de pré-produção do AutenticaçãoGov)?

Ok, amanhã testo, obrigado.

Posted
On 11/7/2022 at 7:37 PM, bioshock said:

E isto significa que consegues testar as assinaturas sem ter a aprovação da @ama.pt (no que toca ao endpoint de pré-produção do AutenticaçãoGov)?

Ok, amanhã testo, obrigado.

Tens de ter a Assinatura digital como atributo, logo claro que tive aprovação

Posted

Qual é a validade do Access Token?

Criei ontem um certificado e fiz download do Access Token e do Refresh Token. Hoje estava a tentar chamar o serviço "/credentials/list" para testar e devolve-me 

{"error":"Bad Request","error_description":"The access or refresh token is expired or has been revoked"}

Fui verificar o certificado e este mantém-se válido e o Access Token continua o mesmo.

Supostamente tenho que chamar o serviço "/signatureAccount/updateToken" mas como? Qual é a URL?

Posted

Que confusão de sistema!

O que é o processId e onde se obtém? Eu estava a confundir o processId com o Credential ID do certificado mas já percebi que não é a mesma coisa.

Sinceramente, que sistema horrível este!

Eu já desenvolvi a comunicação com a espap, Saphety e Multicert sem problemas. Este sistema já me está a meter nojo!

Posted (edited)
On 11/8/2022 at 7:46 PM, desconfiado said:

Qual é a validade do Access Token?

Criei ontem um certificado e fiz download do Access Token e do Refresh Token. Hoje estava a tentar chamar o serviço "/credentials/list" para testar e devolve-me 

{"error":"Bad Request","error_description":"The access or refresh token is expired or has been revoked"}

Fui verificar o certificado e este mantém-se válido e o Access Token continua o mesmo.

Supostamente tenho que chamar o serviço "/signatureAccount/updateToken" mas como? Qual é a URL?

Url: https://pprsafe.autenticacao.gov.pt/signatureAccount/updateToken

No header, envias o parametro SAFEAuthorization com o refreshtoken e o Authorization com o basic token.

 

On 11/8/2022 at 8:35 PM, desconfiado said:

Que confusão de sistema!

O que é o processId e onde se obtém? Eu estava a confundir o processId com o Credential ID do certificado mas já percebi que não é a mesma coisa.

Sinceramente, que sistema horrível este!

Eu já desenvolvi a comunicação com a espap, Saphety e Multicert sem problemas. Este sistema já me está a meter nojo!

O processID é uma GUID que tens de criar.

 

Em relação à validade do access token, eles não expecificam, mas deduzo que seja 1 dia.

 

Edited by zeph
Posted

Parece que já estou a começar a entender isto. Já consegui obter resposta e renovar o token.

Só tenho uma duvida em relação ao processo de criação do certificado. Quem já desenvolveu isto fez a criação do certificado através do software ou fizeram como eu que criei o certificado directamente no portal? E como é que se controla a validade do certificado, ou seja, como é que se sabe quando caduca o certificado? Suponho que terá que ser  criado novo certificado quando o actual caducar, certo?

Posted (edited)
On 11/8/2022 at 9:54 PM, desconfiado said:

Parece que já estou a começar a entender isto. Já consegui obter resposta e renovar o token.

Só tenho uma duvida em relação ao processo de criação do certificado. Quem já desenvolveu isto fez a criação do certificado através do software ou fizeram como eu que criei o certificado directamente no portal? E como é que se controla a validade do certificado, ou seja, como é que se sabe quando caduca o certificado? Suponho que terá que ser  criado novo certificado quando o actual caducar, certo?

A data de validade do certificado emitido é a data de validade do atributo “Assinatura de faturas
eletrónicas” na empresa para a qual pretende criar conta de assinatura, acrescido de 30 dias.

 

 

Edited by zeph

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.