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