2012-10-23 74 views
4

從MVC應用程序,我跟採購驗證的iCal中訂閱的答案,這太問題如下:如何刪除不需要的WWW驗證標題

Serving an iCalendar file in ASPNET MVC with authentication

被動態地創建的iCal流使用DDay.iCal庫的數據庫中的事件。

此解決方案在本地開發服務器上工作正常:OSX日曆和Outlook都可以訂閱並從應用程序接收更新。

但是,在我的Web主機上的共享服務器上,日曆和Outlook的身份驗證都失敗。也就是說,在(正確的)失敗後,他們都一直要求我輸入用戶密碼&。

編輯:如果我指向一個瀏覽器在日曆的URL它也認證失敗。

編輯:獲取weirder-Firefox認證並獲取iCal文件。 Safari,Chrome和IE驗證失敗。

如果我用日誌URL指向具有相同憑據的日曆URL,我會成功(即獲得所需的iCal文件)。而且,當然,可以使用相同的憑據登錄到MVC應用程序。

編輯 - 我想我知道發生了什麼,但我不知道如何解決它。在我OnAuthorization()我只添加WWW-Authentication Basic但菲德勒我可以看到三種認證方式可供選擇:

HTTP/1.1 401 Unauthorized 
WWW-Authenticate: Basic realm="Secure Calendar" 
WWW-Authenticate: Negotiate 
WWW-Authenticate: NTLM 
... etc ... 

此時只有火狐與基本授權,其成功響應。

GET <<URL>> HTTP/1.1 
... 
Authorization: Basic <<encoded credentials>> 

IE與協商響應,從而未能

GET <<URL>> HTTP/1.1 
... 
Authorization Negotiate <<encoded stuff>> 

誰是添加其他兩個,我怎樣才能使它停下來?下面是來自服務器的響應更加詳細:

HTTP/1.1 401 Unauthorized 
Cache-Control: private 
Transfer-Encoding: chunked 
Content-Type: text/html 
Server: Microsoft-IIS/7.5 
X-AspNetMvc-Version: 3.0 
WWW-Authenticate: Basic realm="Secure Calendar" 
X-AspNet-Version: 4.0.30319 
WWW-Authenticate: Negotiate 
WWW-Authenticate: NTLM 
X-Powered-By: ASP.NET 
X-Powered-By-Plesk: PleskWin 
Date: Tue, 23 Oct 2012 13:27:48 GMT 

感謝, 埃裏克

回答

4

呵呵,答案在IIS配置奠定。

我問管理員在我的主機關掉其他的身份,打破了一切,但iCal供稿。

現在,他們已經變成一對夫婦再次回到與MVC網站的作品,以及日曆飼料與認證...呼!非常,非常大的微笑。

下面是我們結束了IIS配置:

Name      Status   Response Type 
Anonymous Authentication Enabled 
ASP.NET Impersonation  Disabled 
Basic Authentication  Disabled  HTTP 401 Challenge 
Digest Authentication  Disabled  HTTP 401 Challenge 
Forms Authentication  Enabled  HTTP 302 Login/Redirect 
Windows Authentication  Enabled  HTTP 401 Challenge 

我不知道爲什麼工作,或什麼別的可能打破,但今天我很高興。

3
WWW-Authenticate: Negotiate 
WWW-Authenticate: NTLM 

被Windows認證使用。由於您最終啓用了匿名身份驗證,因此不會顯示所有WWW-Authenticate標頭。

1

簡單的方法:

如果你想這個「X-供電-BY-的Plesk」標題,以從每個新創建的域被刪除,你可以的web.config文件中創建一個默認的「 httpdocs「文件夾的」默認主機模板「。

此默認網站模板通常位於:「C:\ inetpub \ vhosts.skel \ 0 \ httpdocs」。 即web.config文件將在您創建新網站時默認使用。

<?xml version="1.0" encoding="UTF-8"?> 
    <configuration> 
    <system.webServer> 
     <httpProtocol> 
     <customHeaders> 
      <remove name="X-Powered-By-Plesk" /> 
     </customHeaders> 
     </httpProtocol> 
    </system.webServer> 
    </configuration> 

提示1:您可以使用此方法來消除多餘的自定義頁眉(爲了不要告訴太多關於你的服務器壞人):

<remove name="X-Powered-By"/> 
<remove name="X-Powered-By-Plesk"/> 
<remove name="X-AspNet-Version"/> 
<remove name="X-AspNetMvc-Version"/> 

提示2:如果要刪除任何動態標題(如著名的「服務器」頭),您將需要outboundRules操作:

<configuration> 
    <system.webServer> 
     <rewrite> 
     <outboundRules> 
      <rule name="StripHeader_Server" patternSyntax="Wildcard"> 
      <match serverVariable="RESPONSE_SERVER" pattern="*"/> 
      <action type="Rewrite" value=""></action> 
      </rule> 
      <rule name="StripHeader_ETag"> 
      <match serverVariable="RESPONSE_ETag" pattern=".+" /> 
      <action type="Rewrite" value="" /> 
      </rule> 
     </outboundRules> 
     </rewrite> 
    </system.webServer> 
    </configuration> 

提示3:另外,您可以使用該默認的web.config文件設定要使用每一個新的網站(例如,在所有配置參數:定義的默認文檔列表,爲您的網站,如在此Plesk幫助文章中解釋:https://support.plesk.com/hc/en-us/articles/213364049-How-to-configure-global-default-document-settings-in-Parallels-Plesk