2011-07-14 32 views
7

.ashx汎用ハンドラにhttp PUTを使用するASP.NET(.NET 4)Webサイトがあります。 PUT呼び出しは、Silverlightフロントエンドから発生します。私のローカルマシン(Cassini Webサーバー)上のVS 2010のすべての作品。Windows認証を使用してASHXハンドラのIIS 7.5でPUTを有効にする

次にIIS7.5のWindows Server 2008 R2ボックスに展開しました。

Silverlight /ウェブサイトは正常ですが、.ashxハンドラへのPUT呼び出しにはWindowsログインプロンプトが表示されます。
これはローカルイントラネットなので、Windows認証(NTLM &プロバイダを使用)が有効な唯一の認証です。私は彼の提案に従ってきたと私は今、私の.ashxハンドラーを経由してPUT呼び出しを行うことができますhttp://blogs.msdn.com/b/joseph_fultz/archive/2009/07/23/enabling-the-put-verb-with-handlers-and-iis-7-0.aspx

は、その後、私はこれを読んで。問題は、WebサーバーのAdministratorsグループのユーザーだけがこれを行うことができます。他に誰もできません。 Windowsのログインプロンプトが表示されます。

これはどういう考えですか?

私はWebサーバー上で管理者権限を持つ社員全員に与えることはできません。彼らは間違いなく私の手のうちの1つを切って、私の目の前で手を食べ、そして私にドアを見せてくれるでしょう。

答えて

10

私はそれを理解しました。ここで

は、IIS 7.5の重要な構成要素です:

  1. Windows認証/プロバイダーの下で - NTLMは
  2. ドメインユーザーがASHXハンドラ
  3. を含むディレクトリへの書き込みアクセスを必要と交渉の上でなければなりませんでした
  4. URL認可は、Webサーバー上の役割として有効になっていませんでした。私はそれを追加してからsystem.webServerの下にweb.configファイルでこれを立ち往生:

    私のシステム全体を

    <security> 
        <authorization> 
         <remove users="*" roles="" verbs="" /> 
         <add accessType="Allow" users="*" verbs="GET,HEAD,POST,PUT,DELETE,DEBUG" /> 
        </authorization> 
    </security> 
    

は(私は少しそれをダウントリムますが、今のところ、それは動作します) .webServer要素は次のようになります。

<system.webServer> 
    <modules> 
     <remove name="WebDAVModule" /> 
    </modules> 
    <defaultDocument> 
     <files> 
      <clear /> 
      <add value="default.aspx" /> 
     </files> 
    </defaultDocument> 
    <handlers accessPolicy="Read, Write, Execute, Script"> 
     <remove name="WebDAV" /> 
     <remove name="SimpleHandlerFactory-Integrated-4.0" /> 
     <remove name="SimpleHandlerFactory-Integrated" /> 
     <add name="SimpleHandlerFactory-Integrated" path="*.ashx" verb="GET,HEAD,POST,DEBUG,PUT" type="System.Web.UI.SimpleHandlerFactory" resourceType="Unspecified" requireAccess="Write" preCondition="integratedMode" /> 
     <add name="SimpleHandlerFactory-Integrated-4.0" path="*.ashx" verb="GET,HEAD,POST,DEBUG,PUT" type="System.Web.UI.SimpleHandlerFactory" resourceType="Unspecified" requireAccess="Write" preCondition="integratedMode,runtimeVersionv4.0" /> 
    </handlers> 
    <security> 
     <authorization> 
      <remove users="*" roles="" verbs="" /> 
      <add accessType="Allow" users="*" verbs="GET,HEAD,POST,PUT,DELETE,DEBUG" /> 
     </authorization> 
    </security> 

</system.webServer> 

これを行いました。

+0

.net 3.5アプリケーション用のソリューション –

関連する問題