データ保護APIを理解できません。クラスタ化された環境でのASP.Netコアデータ保護API
クラスタ環境(サービスファブリック)でいくつかのネットコアWebアプリケーションを設定したいと考えています。以前は、各マシンがweb.configに同じキーを持つようにするだけでした。シンプル。新しいデータ保護APIを使用すると少し(ぬいぐるみ!)ビットがより複雑に見えます。
ドキュメントhereからは、適切な証明書を使用してData Protectionサービスを設定するだけの簡単な手順が必要です。
public static void Main(string[] args)
{
// add data protection services
var serviceCollection = new ServiceCollection();
string thumbPrint = "XXXXXXXXXXXX";
serviceCollection.AddDataProtection()
.ProtectKeysWithDpapiNG($"CERTIFICATE=HashId:{thumbPrint}", flags: Microsoft.AspNetCore.DataProtection.XmlEncryption.DpapiNGProtectionDescriptorFlags.None);
var services = serviceCollection.BuildServiceProvider();
// create an instance of MyClass using the service provider
var instance = ActivatorUtilities.CreateInstance<MyClass>(services);
instance.RunSample();
}
public class MyClass
{
IDataProtector _protector;
// the 'provider' parameter is provided by DI
public MyClass(IDataProtectionProvider provider)
{
_protector = provider.CreateProtector("Contoso.MyClass.v1");
}
public void RunSample()
{
Console.Write("Enter input: ");
string input = Console.ReadLine();
// protect the payload
string protectedPayload = _protector.Protect(input);
Console.WriteLine($"Protect returned: {protectedPayload}");
// unprotect the payload
string unprotectedPayload = _protector.Unprotect(protectedPayload);
Console.WriteLine($"Unprotect returned: {unprotectedPayload}");
Console.ReadLine();
}
}
そして、私はいくつかの周り掘りするキーに指定されていません永続化ストアが存在しないからだということが判明した後
System.InvalidOperationException occurred
HResult=0x80131509
Message=No service for type 'Microsoft.AspNetCore.DataProtection.Repositories.IXmlRepository' has been registered.
の例外を取得:私はこれを試してみましたが
。
ここにはどのようなアドバイスがありますか?キーをいくつかの中央の場所(つまり、すべてのアプリケーションで使用できる共有)に固定する必要があります。もしそうなら、理由は何ですか?
キーが保持される場所を明示する必要があります。 https://docs.microsoft.com/en-gb/aspnet/core/security/data-protection/configuration/overview- try '.PersistKeysToFileSystem(新しいDirectoryInfo(@" \\ server \ share \ directory \ "));例えば、 – Christo
@Christoありがとう!私がこの質問を更新したと完全に考えていた、私はAzureStorageに私の鍵を残してしまった。 – Mardoxx