Проблемы с DataProtection API (C #) - PullRequest
       37

Проблемы с DataProtection API (C #)

0 голосов
/ 12 октября 2018

У меня есть веб-приложение Azure с несколькими слотами для развертывания.Я хочу, чтобы каждый слот развертывания имел свой собственный ключ защиты данных.Ключ должен сохраняться между развертываниями.

Uri storageUri = new Uri(blobStorageSasUri);
CloudBlobClient blobClient = new CloudBlobClient(storageUri);
CloudBlobContainer container = blobClient.GetContainerReference("identityserver4dataprotectionkeys");
container.CreateIfNotExistsAsync().GetAwaiter().GetResult();
services.AddDataProtection()
    .SetApplicationName($"{_env.EnvironmentName}_identityserver4")
    .PersistKeysToAzureBlobStorage(container, $"{_env.EnvironmentName}/dataprotectionkeys.xml");

Как ни странно, приложение ищет другие ключи, которые отсутствуют в хранилище больших двоичных объектов.Например, это исключение:

CryptographicException: The key {3c2e44fa-dbeb-4547-8d1d-40f5eed15590} was not found in the key ring.

Находясь в хранилище BLOB-объектов, у меня есть идентификатор ключа: 6bed1559-9bf7-42af-83fd-85fb417c4edc.

Также в хранилище BLOB-объектов всегда присутствует только один ключ.

У меня серьезные проблемы с реализацией этого API. Помощь очень ценится!

Ответы [ 2 ]

0 голосов
/ 13 октября 2018

Я исправляю это с помощью keyvault.

public void ConfigureServices(IServiceCollection services)
{
services.AddDataProtection()
    .PersistKeysToAzureBlobStorage(new Uri("<blobUriWithSasToken>"))
    .ProtectKeysWithAzureKeyVault("<keyIdentifier>", "<clientId>",         "<clientSecret>");
}

Источник: https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/configuration/overview?view=aspnetcore-2.1&tabs=aspnetcore2x#protectkeyswithazurekeyvault

0 голосов
/ 12 октября 2018

Можете ли вы подтвердить, что 3c2e44fa-dbeb-4547-8d1d-40f5eed15590 присутствует в хранилище блога и принадлежат другой среде?Можете ли вы проверить, возвращает ли EnvironmentName ожидаемое значение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...