Domanda

Io sono in esecuzione in un problema che ho avuto prima;riesco a trovare il mio riferimento su come risolverlo.

Qui è il problema.Abbiamo crittografare le stringhe di connessione sezione in app.config per la nostra applicazione client che utilizza il codice riportato di seguito:

        config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
        If config.ConnectionStrings.SectionInformation.IsProtected = False Then
            config.ConnectionStrings.SectionInformation.ProtectSection(Nothing)

            ' We must save the changes to the configuration file.'
            config.Save(ConfigurationSaveMode.Modified, True)
        End If

Il problema è che abbiamo avuto un commesso di lasciare.Il vecchio portatile è di andare a un nuovo venditore e con il nuovo account di accesso dell'utente, quando si tenta di fare questo, abbiamo un errore.L'errore è:

Unhandled Exception: System.Configuration.ConfigurationErrorsException: 
An error occurred executing the configuration section handler for connectionStrings. ---> System.Configuration.ConfigurationErrorsException: Failed to encrypt the section 'connectionStrings' using provider 'RsaProtectedConfigurationProvider'. 
Error message from the provider: Object already exists.
---> System.Security.Cryptography.CryptographicException: Object already exists
È stato utile?

Soluzione 2

Ho trovato una soluzione più elegante che nel mio originale risposta a me stesso.Ho scoperto che se ho appena effettuato il login come th euser che originariamente installato l'applicazione e che ha causato il file di configurazione connectionstrings essere crittografati e visitare il .net framework directory in un commadn comandi ed eseguire

aspnet_regiis -pa "NetFrameworkConfigurationKey" "{domain}\{user}"

ha dato l'altro utente l'autorizzazione per l'accesso alla chiave di crittografia RSA contenitore e si lavora poi per l'altro utente(s).

Volevo solo aggiungere che qui mi aveva parlato di questo problema sul nostro dev blog, ma è qui, quindi nel caso in cui ho bisogno di guardare di nuovo sarà qui.Aggiungere un collegamento al nostro dev blog di punto in questo thread così.

Altri suggerimenti

http://blogs.msdn.com/mosharaf/archive/2005/11/17/protectedConfiguration.aspx#1657603

copia e incolla :D

Lunedì, febbraio 12, 2007 12:15 AM da Naica

re:La crittografia dei file di configurazione protetta di configurazione

Ecco un elenco di tutti i passaggi che ho fatto per crittografare due sezioni sul mio PC e poi distribuire al WebServer.Forse aiuterà qualcuno...:

  1. Per creare una macchina a livello di contenitore di chiavi RSA

    aspnet_regiis -pc "DataProtectionConfigurationProviderKeys" -exp
    
  2. Aggiungi questo al web.config prima di connectionStrings sezione:

     <add name="DataProtectionConfigurationProvider"
    
          type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0,
    
                   Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a,
    
                   processorArchitecture=MSIL"
    
          keyContainerName="DataProtectionConfigurationProviderKeys"
    
          useMachineContainer="true" />
    

    Non perdere l' <clear /> dall'alto!Importante quando si gioca con la crittografia/decrittografia molte volte

  3. Controllare di avere al top del Web.File di configurazione.Se manca di aggiungere che:

    <configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
    
  4. Salvare e chiudere Web.File di configurazione in VS (molto importante!)

  5. Nel Prompt dei comandi (il mio PC locale) finestra andare:

    C:\WINNT\Microsoft.NET\Framework\v2.0.50727

  6. Cifrare:(Di essere a conoscenza di Cambiare percorso fisico per la vostra Applicazione, o usare -app opzione e dare il nome o la directory virtuale di app!Perché ho usato il VS sul mio PC, io ho preferito il muggito di opzione.Il percorso è il percorso Web.file di configurazione)

    aspnet_regiis -pef "connectionStrings" "c:\Bla\Bla\Bla" prov "DataProtectionConfigurationProvider"

    aspnet_regiis -pef "del sistema.web/iscrizione" "c:\Bla\Bla\Bla" prov "DataProtectionConfigurationProvider"

  7. Per Decifrare (se necessario solo!!!):

    aspnet_regiis -pdf "connectionStrings" "c:\Bla\Bla\Bla"
    
    aspnet_regiis -pdf "system.web/membership" "c:\Bla\Bla\Bla"
    
  8. Eliminare le Chiavi Contenitore (se necessario solo!!!)

    aspnet_regiis -pz "DataProtectionConfigurationProviderKeys"
    
  9. Salvare la chiave in un file xml per l'esportazione dal vostro PC locale al WebServer (UAT o di Produzione)

    aspnet_regiis -px "DataProtectionConfigurationProviderKeys" \temp\mykeyfile.xml -pri
    
  10. Importare la chiave del contenitore sul server web server:

    aspnet_regiis -pi "DataProtectionConfigurationProviderKeys" \temp\mykeyfile.xml
    
  11. Concedere l'accesso alla chiave sul server web

    aspnet_regiis -pa "DataProtectionConfigurationProviderKeys" "DOMAIN\User"
    

    Vedere in IIS l'ASP.NET utente o utilizzare:

    Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name
    
  12. Rimuovere Concedere l'accesso alla chiave sul server web (Solo se necessario!)

    aspnet_regiis -pr "DataProtectionConfigurationProviderKeys" "Domain\User"
    
  13. Copia e Incolla il WebServer Web criptato.file di configurazione.

Così ho fatto a far funzionare il tutto.

  1. rimosso il vecchio account di utenti, dai laptop
  2. reset app.config per avere sezione non protetta
  3. rimosso il file di chiave da tutti gli utenti della macchina chiavi
  4. correva app e ha permesso di proteggere la sezione

Ma tutto questo fatto è stato ottenere lavorando per questo utente.

ORA ho bisogno di sapere cosa devo fare per modificare il codice per proteggere la sezione in modo che più utenti su un PC è in grado di utilizzare l'applicazione.Virtual PC ecco, io vengo (anche dopo le vacanze al WDW di domani attraverso mercoledì prossimo)!

qualche consiglio per aiutare indicando me nella giusta direzione, come io non sono molto esperto in questo tipo di crittografia RSA roba.

Suona come un problema di autorizzazioni.Il (nuovo) l'utente in questione ha i permessi di scrittura per l'app.file di configurazione?Era il precedente utente un amministratore locale o power user che potrebbe aver mascherato il problema?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top