2009-07-08 8 views
0

ドメインユーザー(MYDOMAIN \ someuser)として実行するように構成されたIIS7のサイトがいくつかあります。Microsoft.Web.Administration.ServerManagerは、applicationHost.configの暗号化されたパスワードを含む構成セクションを読み取ることができません。

私は私のサーバー構成をスキャンするMicrosoft.Web.Administration名前空間を使用していますが、私はこれらの「偽装」のサイトのいずれかを打ったとき、それは例外を投げ:

using (ServerManager sm = new ServerManager()) { 
    foreach (Site site in sm.Sites) { 
     foreach (Application app in site.Applications.Reverse()) { 
      foreach (VirtualDirectory vdir in app.VirtualDirectories.Reverse()) { 
       var config = app.GetWebConfiguration(); 
       foreach (var locationPath in config.GetLocationPaths()) { 
        // error occurs in GetLocationPaths() 
       } 
      } 
     } 
    } 
} 

実際のエラーメッセージは次のとおりです。

COMException was unhandled 
Filename: \\?\C:\Windows\system32\inetsrv\config\applicationHost.config 
Line number: 279 
Error: Failed to decrypt attribute 'password' because the keyset does not exist 

IISが、セキュリティの面で素晴らしいですapplicationHost.configの中で暗号化されたMYDOMAIN \のsomeuserパスワードを保存していることが表示されます - 私はこれを解読するServerManagerのを取得する方法は考えています。

ServerManagerでこれを復号化する方法や、パスワードをプレーンテキストで保存するようにIISに指示する方法についてのヒントはありますか?

これは、Windows 7 RCでIIS7にあります。

答えて

0

IISは、スキーマで「encrypted = true」とマークされた属性に対して暗号化を使用します。また、そのスキーマでは、暗号化に使用するプロバイダを定義します(C:¥Windows¥System32¥inetsrv¥config¥schema¥IIS_Schema.xmlを参照)。仮想ディレクトリ内にパスワードがある場合は、AesProviderを使用しますApplicationHost.config内のconfigProtectedDataセクション。

ここには、セキュリティ上の理由から、デフォルトで管理者のみが含まれています。復号化できるアカウントにアクセス許可を与えるために必要なKeyContainerNameが表示されます。

これは私の質問につながります。あなたのコードが失敗した場合は、あなたがAdministratorではないユーザーにApplicationHost.configへのアクセスを許可したと思います。 これは、あなたの環境にセキュリティリスクを開かないようにすることを推奨します。

関連する問題