Jag har lyckats få ihop en applikation som använder .NET:s inbyggda funktionalitet för att kryptera connectionsträngar. Det fungerar alldeles utmärkt men det är ett problem. Jag vill att nyckeln enbart skall fungerar för en specifik user och inte för själva maskinen som applikationen byggts på. Har tittat runt lite och även lekt lite i Visual studio och upptäckt att jag inte kan sätta property:n:RsaProtectedConfigurationProvider
((RsaProtectedConfigurationProvider)section.SectionInformation.ProtectionProvider).UseMachineContainer = false;
Den har tydigen bara get (read-only).
Ett sätt att sätta denna property:n ska tydligen vara att i config filen ange info i stil med:
<configProtectedData>
<providers>
<add keyContainerName="NetFrameworkConfigurationKey"
useMachineContainer="false"
description="Uses RsaCryptoServiceProvider to encrypt and decrypt"
name="MyUserRSAProtectedConfigurationprovider"
type="System.Configuration.RsaProtectedConfigurationProvider,System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</configProtectedData>
varpå man sedan läser in detta. Jag har inte kollat upp mer än såhär och det är därför jag tänkte kolla här innan jag börjar med sättet ovan. Finns det något smidigt sätt att lösa detta i koden? I mitt fall spelar det ingen roll om informationen för hur krypteringen ska gå till sker i koden, det finns inget krav på flexibilitet i det här fallet och det skulle allmänt vara säkrare i mitt fall att hårdkoda denna informationen.
Svaren på detta inlägg får gärna vara i form av en hänvisning till någon bra artikel/tutorial, jag är alltså inte ute efter en komplett lösning bara om det finns möjlighet att lösa detta såsom jag vill.