데이터 보호 API를 이해하는 데 어려움이 있습니다.클러스터 된 환경의 ASP.Net 핵심 데이터 보호 API
클러스터 된 환경 (서비스 패브릭)에서 일부 핵심 코어 웹 응용 프로그램을 설정하려고합니다. 이전에는 각 컴퓨터가 web.config에서 동일한 키를 사용하는지 확인했습니다. 단순한. 새로운 데이터 보호 API를 사용하면 약간 (로터스!) 비트가 더 복잡해 보입니다.
설명서 here에서 알맞은 인증서로 데이터 보호 서비스를 설정하는 것처럼 간단해야합니다.
그러나 나는이 시도 :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 -'.PersistKeysToFileSystem (새로운 DirectoryInfo (@ "\\ server \ share \ directory \")); 예를 들어. – Christo
@Christo 감사합니다! 완전히이 질문을 업데이트 한 것으로 생각하여 AzureStorage에 대한 키 유지가 끝났습니다. – Mardoxx