Назад | Перейти на главную страницу

Как изменить поставщика шифрования паролей виртуального каталога IIS Express?

В Visual Studio 2012 я работаю над приложением ASP.NET MVC, которому требуется виртуальный каталог в главном каталоге приложения под названием «Shared». Это указывает на путь UNC, поэтому мне также нужно указать имя пользователя и пароль для доступа к пути.

Я делаю это с помощью следующей команды:

C:\Program Files\IIS Express> AppCmd.exe SET VDir /username:"DOMAIN\user" /password:"Password"

Но когда я запускаю приложение, я получаю следующую ошибку конфигурации при попытке доступа к общему виртуальному каталогу:

Failed to decrypt attribute 'password' because the keyset does not exist

Затем на экране ошибки выделяется соответствующий <virtualDirectory> элемент в моем applicationHost.config файл:

<virtualDirectory path="/Shared" physicalPath="\\MyNAS\MyUNCPath\Shared" userName="DOMAIN\user" password="[enc:RsaProtectedConfigurationProvider:ALONGENCRYPTIONSTRINGISHERE==:enc]" />

Я безумно гуглил пару часов и видел несколько комментариев, указывающих на то, что тип шифрования по умолчанию (правильный?) Для моего пароля в этом сценарии должен быть «AesProvider», а не «RsaProtectedConfigurationProvider». Но, похоже, нет никакого способа явно объявить поставщика шифрования, который будет использоваться при установке пароля.

Если это полезно, список поставщиков в моем applicationHost.config выглядит так:

<configProtectedData>
    <providers>
        <add name="IISWASOnlyRsaProvider" type="" description="Uses RsaCryptoServiceProvider to encrypt and decrypt" keyContainerName="iisWasKey" cspProviderName="" useMachineContainer="true" useOAEP="false" />
        <add name="AesProvider" type="Microsoft.ApplicationHost.AesProtectedConfigurationProvider" description="Uses an AES session key to encrypt and decrypt" keyContainerName="iisConfigurationKey" cspProviderName="" useOAEP="false" useMachineContainer="true" sessionKey="ALONGENCRYPTIONKEYSTRINGISHERE" />
        <add name="IISWASOnlyAesProvider" type="Microsoft.ApplicationHost.AesProtectedConfigurationProvider" description="Uses an AES session key to encrypt and decrypt" keyContainerName="iisWasKey" cspProviderName="" useOAEP="false" useMachineContainer="true" sessionKey="ANOTHERENCRYPTIONKEYSTRINGISHERE" />
    </providers>
</configProtectedData>

Мое чутье говорит, что здесь некоторая неправильная конфигурация, но я не знаю, как определить и исправить проблему. Любые идеи?