我正在尝试配置一个查询 SharePoint 列表的 Web 服务。Web 服务应允许来自客户端的匿名访问。然而,我所观察到的让我感到困惑。以下是我的环境的高级概述:
Web 服务客户端 -> Web 服务 -> SharePoint
我发现运行 Web 服务客户端的用户需要访问 SharePoint。换句话说,用户凭据从客户端通过 Web 服务层一直传递到 SharePoint。我更喜欢的是只授予 Web 服务应用程序池身份帐户权限。禁用集成安全后,在 Web 服务 IIS 配置设置中仅启用匿名访问时,会引发 401(身份验证被拒绝)异常。
我已验证应用程序池身份帐户对 SharePoint 网站具有权限。我还验证了身份验证模式在 web.config 文件中配置为“windows”。我没有在任何地方使用模拟。
请注意,这是一个自定义 Web 服务(不使用内置的 SharePoint Web 服务),托管在 Windows Server 2003 上的 IIS 6.0 中。
编辑:我在未连接到 SharePoint 的 Web 服务上公开了其他 Web 方法。我调用这些网络方法没有问题。此外,我已验证客户端用户正在传递到 SharePoint,因为我必须授予用户(运行客户端的人)对 SharePoint 的访问权限。
我相信您希望将 Web 服务 web.config 中的身份验证模式设置为“无”。这应该允许匿名客户端请求,然后 IIS 将在应用程序池标识的上下文中连接到您的 Sharepoint 站点。
更新:您是否检查了站点中特定文件的身份验证?它可能与站点配置不同。
**更新前:**如果您在 Web 服务站点上仅配置了匿名身份验证。该网站不可能进行模拟/授权。
您收到的错误(401 和 403)来自 Web 服务站点。如果问题出在访问 sharepoint 站点上。错误不会来自 IIS,而是来自您的代码。
您应该将故障排除集中在 401 和 403 上。首先,完整的错误是什么。在 iis 日志中查找它们。
Web 服务调用需要在此处将凭据传递给 SharePoint。您可以编写一些凭据或使用模拟并获取用户的 Windows 凭据。