Azure Connector
O pacote Lacuna PKI Azure Connector possibilita as seguintes integrações entre o SDK e o Microsoft Azure Storage Service:
- Utilizar chaves armazenadas em um Azure Key Vault
- Compressão e descompressão de assinaturas CAdES armazenando LCRs e certificados em um Blob Storage
- Criação e validação de assinaturas CAdES com referência de revogação porém sem valores de revogação armazenando os valores em um Blob Storage
- Enviar mensagens de log geradas pelo SDK para um Table Storage
Note
Para informações sobre integração com Azure Key Vault, clique aqui
Credenciais do Azure Storage
A primeira coisa que você vai precisar é criar uma conta no Azure Storage e obter credenciais de acesso, denominadas Access Keys no vocabulário do Azure. Se você ainda não fez isso, siga as instruções contidas neste link.
Ao final desse processo você deve ter uma connection string similar a:
DefaultEndpointsProtocol=https;AccountName=youraccount;AccountKey=XXXXXXXXXX==
O lugar ideal para colocar essa string é no seu web.config
ou app.config
:
<appSettings>
<add key="AzureStorage" value="DefaultEndpointsProtocol=https;AccountName=youraccount;AccountKey=XXXXXXXXXX==" />
</appSettings>
Utilizando o armazenamento em Blob Storage
A classe AzureBlobStorageStore, incluída no pacote opcional, implementa a interface ISimpleStore, utilizada pelo SDK quando um storage externo é necessário (para mais informações, veja Pacotes nuget opcionais).
Se você armazenou sua connection string do Azure Storage no web.config
como sugerido acima, você deve instanciar a classe AzureBlobStorageStore da seguinte maneira:
var store = AzureBlobStorageStore.CreateFromSettingName("AzureStorage"); // ou o que você colocou no atributo "key" da tag appSetting
Também é possível deixar a connection string no código:
var store = AzureBlobStorageStore.CreateFromConnectionString("DefaultEndpointsProtocol=https;AccountName=youraccount;AccountKey=XXXXXXXXXX==");
Os objetos são armazenados por padrão em um container denominado "lacuna-pki-store", mas é possível alterar isso:
var store = AzureBlobStorageStore.CreateFromSettingName("AzureStorage", "my-container");
Tendo uma instância da classe AzureBlobStorageStore associada à sua conta do Azure Storage, você pode utilizá-la em qualquer lugar que o SDK exija um ISimpleStore, por exemplo para comprimir e descomprimir assinaturas CAdES:
byte[] precomputedSignature = ...; // qualquer assinatura CAdES, não necessariamente feita com o SDK
var compressedSignature = CadesSignatureCompression.Compress(precomputedSignature, store);
var decompressedSignature = CadesSignatureCompression.Decompress(compressedSignature, store);
Enviando logs para um Table Storage
A classe AzureTableStorageLogger é utilizada para enviar logs gerados pelo SDK para uma tabela do Azure Table Storage. Instancia-se a classe da mesma maneira que a AzureBlobStorageStore:
var logger = AzureTableStorageLogger.CreateFromSettingName("AzureStorage"); // ou o que você colocou no atributo "key" da tag appSetting
Os logs são armazenados por padrão em uma tabela denominada "LacunaPkiLog", mas é possível alterar essa configuração:
var logger = AzureTableStorageLogger.CreateFromSettingName("AzureStorage", "MyTable");
Também é possível especificar um nível mínimo de log a ser considerado (o padrão é logar de Info
para cima):
var logger = AzureTableStorageLogger.CreateFromSettingName("AzureStorage", minLevel: LogLevels.Trace); // this would log A LOT, use only for diagnostics
Tendo uma instância da classe AzureTableStorageLogger, basta então chamar o método Configure() para configurar o SDK para enviar os logs para o Azure:
logger.Configure();
Geralmente faz-se apenas o seguinte:
AzureTableStorageLogger.CreateFromSettingName("AzureStorage").Configure();
Código-fonte
O código-fonte do pacote Lacuna PKI Azure Connector é aberto, ficando hospedado no BitBucket. Caso queira customizá-lo, você pode fazer um fork do projeto e utilizar a sua versão customizada ao invés do pacote opcional.