记录一个SPS2010中RSS Web Part报错的问题
SharePoint中的RSS WebPart只要访问需要认证的RSS Feed的时候就会失败.
错误信息
================
“The RSS webpart does not support authenticated feeds”
当RSS Web Part试图展示SharePoint站点自身上的列表内容的时候, 如果SharePoint站点不支持匿名访问, 那么上面的错误就会报出来了.
那么有没有办法既让RSS web part可以显示站点自身的数据, 同时又需要用户通过认证才能访问站点呢?
答案是可以的. 那就是让站点使用Kerberos认证. RSS Web Part只支持一种认证模式, 那就是Kerberos.
然而有一个客户她的环境里就配了Kerberos, 但是她的RSS web part还是会报上面的错误.
她的场里有两台WFE, 使用一个Host Header作为Network Load Balancer的名字.
1. 用户请求带有RSS web part的页面 –> WFE1
2. WFE1试图展示页面上所有的web part, 发现有个RSS web part, 于是再发一个http请求给Rss web part里配置的RSS Feed URL. 即再发一个请求给站点自己.
3. 由于有两个WFE, 那么这个请求有可能被另一个WFE处理, 也有可能自己处理.
4. 两个WFE之间通信的时候使用NTLM认证, 于是RSS Web Part显示失败.
尝试过的步骤
=================
通过下面的方式禁止任何的NTLM认证.
1. 修改每台WFE上的host文件, 让Host Header指向127.0.0.1. 防止请求发给另一个WFE.
2. 删除下面的注册表键值
"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0\BackConnectionHostNames"
3. 执行下面的步骤, 禁止LoopBackCheck.
- locate and then click the following registry key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
- Right-click Lsa, point to New, and then click DWORD Value.
- Type DisableLoopbackCheck, and then press ENTER.
- Right-click DisableLoopbackCheck, and then click Modify.
- In the Value data box, type 1, and then click OK.
- Quit Registry Editor, and then restart your computer.
经过上面的步骤, 我们发现该问题依然存在. SharePoint服务器在修改了host文件的情况下依然会发出Internal RSS request.
经过进一步的研究, 我们发现该客户的内外网络间配置了防火墙, 该防火墙还扮演着Proxy的角色.
因为SharePoint两台前端上都配置了代理, 因为这个原因, 请求在修改了host文件的情况下还是会发到网络上, 从而被另一台WFE接收.
防火墙在转发请求的时候却使用了不该使用的NTLM认证方式, SharePoint于是向用户发出认证要求, 方式正是NTLM. 由于NTLM认证不会被RSS web part所接受, 于是错误发生了.
解决方案
=============
为"Use any authentication protocol"配置constrained delegation.
将SharePoint所使用的apppool帐号, farm admin帐号都添加到该配置中.
这里的配置(即"Use any authentication protocol")可以让用户使用NTLM认证协议访问WFE服务器, 然后WFE服务器可以impersonate该用户并使用Kerberos认证协议来访问其他服务器.
问题解决.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律