laboss Posted October 27, 2022 at 01:54 PM Report #627797 Posted October 27, 2022 at 01:54 PM 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.
bioshock Posted October 27, 2022 at 01:58 PM Report #627798 Posted October 27, 2022 at 01:58 PM 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?
laboss Posted October 27, 2022 at 02:30 PM Report #627800 Posted October 27, 2022 at 02:30 PM (edited) Basicamente e isto, saltando a parte da autenticação, etc. Geras o PDF sem assinatura 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 Invocas o serviço para pedir autorização assinar Aqui vais ter de enviar o hash gerado no passo 2 O passo 3 devolve um SAD (Basicamente é um ID com a autorização) Invocas o serviço de assinatura com o SAD e com os hash novamente O serviço vai-te devolver a assinatura do teu HASH que basicamente é um novo HASH Tens de colocar o HASH recebido embebido no PDF (No container que criaste ao gerar o 1º HASH) 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 October 27, 2022 at 02:32 PM by laboss 2 Report
bioshock Posted October 27, 2022 at 03:22 PM Report #627803 Posted October 27, 2022 at 03:22 PM Obrigado. Talvez vá implementar isto. O problema está em assinar o documento, utilizo PHP e não há muitas opções disponíveis. Há uma grátis, mas nem sei se funciona.
bioshock Posted October 29, 2022 at 02:38 AM Report #627842 Posted October 29, 2022 at 02:38 AM (edited) On 10/27/2022 at 3:30 PM, laboss said: 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 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 October 29, 2022 at 02:38 AM by bioshock
laboss Posted October 29, 2022 at 06:22 AM Report #627843 Posted October 29, 2022 at 06:22 AM Depois de meteres o container da assinatura e basicamente isso, o código não consigo passar pois é da empresa, mas é basicamente isto https://stackoverflow.com/questions/54559547/external-signing-pdf-with-itext Não usei essa lib usei devexpress mas a muita gente a usar essa 1 1 Report
samuquinha Posted October 31, 2022 at 03:02 PM Report #627883 Posted October 31, 2022 at 03:02 PM Boas, 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. Obrigado
bioshock Posted October 31, 2022 at 03:16 PM Report #627885 Posted October 31, 2022 at 03:16 PM 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: Redireccionar o utilizador para o gov. para efectuar a autenticação Invocar o serviço "FA" diversas vezes para obter privilégios (scopes) etc 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.
laboss Posted October 31, 2022 at 03:21 PM Report #627887 Posted October 31, 2022 at 03:21 PM 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.
samuquinha Posted October 31, 2022 at 03:22 PM Report #627888 Posted October 31, 2022 at 03:22 PM 3 minutos atrás, bioshock disse: Segundo percebi da documentação na diagonal: Redireccionar o utilizador para o gov. para efectuar a autenticação Invocar o serviço "FA" diversas vezes para obter privilégios (scopes) etc 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
samuquinha Posted October 31, 2022 at 03:26 PM Report #627889 Posted October 31, 2022 at 03:26 PM 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
bioshock Posted October 31, 2022 at 03:34 PM Report #627890 Posted October 31, 2022 at 03:34 PM (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 October 31, 2022 at 03:35 PM by bioshock
laboss Posted October 31, 2022 at 03:38 PM Report #627892 Posted October 31, 2022 at 03:38 PM Eu tive de pedir as credenciais
samuquinha Posted October 31, 2022 at 03:40 PM Report #627893 Posted October 31, 2022 at 03:40 PM 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?
laboss Posted October 31, 2022 at 04:09 PM Report #627898 Posted October 31, 2022 at 04:09 PM https://www.autenticacao.gov.pt/serviço-de-assinatura-de-faturas-eletrónicas-safe- tem la no fim o email, eu mandei o mail enviaram os dados de teste, depois de assinar o protocolo, depois quando conclui eles quiseram uns pdf de exemplo no ambientes de testes e as guide lines assinadas, depois é que deram as credenciais finais
bioshock Posted November 3, 2022 at 02:51 PM Report #627957 Posted November 3, 2022 at 02:51 PM 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?
zeph Posted November 3, 2022 at 04:02 PM Report #627961 Posted November 3, 2022 at 04:02 PM (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 November 3, 2022 at 04:09 PM by zeph
laboss Posted November 3, 2022 at 04:14 PM Report #627962 Posted November 3, 2022 at 04:14 PM Ativaste os atributos profissionais nesse utilizador, e já foi validado por eles?
bioshock Posted November 3, 2022 at 04:20 PM Report #627963 Posted November 3, 2022 at 04:20 PM 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 😔
laboss Posted November 3, 2022 at 04:24 PM Report #627964 Posted November 3, 2022 at 04:24 PM 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.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now