Eri*_*son 4 icalendar iis-7 plesk asp.net-mvc-3
从 MVC 应用程序中,我正在根据对这个 SO 问题的回答获取带有身份验证的 iCal 订阅:
使用身份验证在 ASPNET MVC 中提供 iCalendar 文件
iCal 流是使用 DDay.iCal 库从数据库中的事件动态创建的。
此解决方案在本地开发服务器上运行良好:OSX 日历和 Outlook 都可以从应用程序订阅和接收更新。
但是,在我的 Web 主机上的共享服务器上,日历和 Outlook 的身份验证均失败。也就是说,他们都在(正确的)失败后不断向我询问用户和密码。
编辑:如果我将浏览器指向日历 URL,它也会无法通过身份验证。
编辑:变得更奇怪——Firefox 验证并获取 iCal 文件。Safari、Chrome 和 IE 验证失败。
如果我使用相同的凭据将 curl 指向日历 URL,我就成功了(即我获得了所需的 iCal 文件)。当然,可以使用相同的凭据登录到 MVC 应用程序。
编辑 - 我想我知道发生了什么,但我不知道如何解决它。在我的OnAuthorization()
I add onlyWWW-Authentication Basic
但使用 Fiddler 我可以看到提供了三种类型的身份验证:
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Secure Calendar"
WWW-Authenticate: Negotiate
WWW-Authenticate: NTLM
... etc ...
Run Code Online (Sandbox Code Playgroud)
此时只有 Firefox 响应基本授权,它成功了。
GET <<URL>> HTTP/1.1
...
Authorization: Basic <<encoded credentials>>
Run Code Online (Sandbox Code Playgroud)
IE 以协商响应,但失败
GET <<URL>> HTTP/1.1
...
Authorization Negotiate <<encoded stuff>>
Run Code Online (Sandbox Code Playgroud)
谁在添加另外两个,我怎样才能让它停止?以下是来自服务器响应的更多详细信息:
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
Run Code Online (Sandbox Code Playgroud)
谢谢,埃里克
呵呵,答案在于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
Run Code Online (Sandbox Code Playgroud)
我不确定为什么会这样——或者还有什么可能会失败——但今天我很高兴。
归档时间: |
|
查看次数: |
9243 次 |
最近记录: |