amagovpt / autenticacao.gov

Middleware Oficial de Identificação Eletrónica em Portugal - Cartão de Cidadão, da Chave Móvel Digital e Sistema de Certificação de atributos profissionais
https://www.autenticacao.gov.pt
European Union Public License 1.2
164 stars 33 forks source link

Assinar XML com Cartão de Cidadão em C# - Servidor IIS #139

Open R2CristinaMoura opened 1 year ago

R2CristinaMoura commented 1 year ago

Bom dia,

Estou a usar a biblioteca desenvolvida pelo @RicardoSoares97 (https://github.com/amagovpt/autenticacao.gov/issues/51) e em modo local consigo assinar devidamente o XML (em C# Visual Studio). Quando passamos para um servidor IIS, obtemos o erro "A referência de objecto não foi definida como uma instância de um objecto." quando tenta carregar os certificados.

certChild = RDSignatures.RDSignaturesClass.ReturnCertificate("EC de Assinatura Digital Qualificada do Cartão de Cidadão 0015", "NOME"); certRoot = RDSignatures.RDSignaturesClass.ReturnCertificate(certChild.IssuerName.Name);

Conseguem-me ajudar nesta situação?

Obrigada

agrr commented 1 year ago

A assinatura com Cartão de Cidadão seja através da biblioteca pteidlib_dotnet ou das funções da CryptoAPI como implementou o @RicardoSoares97 tem de ser executada por uma aplicação desktop na máquina cliente onde o smartcard (CC) está disponível.

Pela descrição deduzo que tenha incluido esse código numa aplicação .net server-side. Pode funcionar "por sorte" em modo de desenvolvimento com o servidor em localhost porque nesse caso o smartcard e o servidor estão na mesma máquina.

R2CristinaMoura commented 1 year ago

Bom dia,

Estamos a usar o plugin Token Signing (https://www.id.ee/) para fazer a comunicação com o cartão cidadão sem qualquer problema. Só que gostaríamos de uma alternativa a este processo.

Têm alguma sugestão?

Obrigada.

pmcfernandes commented 1 year ago

Podem criar um cliente websockets e atraves do websockets fazer um pedido do servidor para o cliente sendo que o cliente é que terá toda a logica da pteidlib_dotnet e no final envia o resultado por websocket novamente para o servidor que "pode ser" uma pagina html por exemplo a corrrer num IIS