asp.net - 如何从 SharePoint 应用程序和 WPF 配置和调用非匿名 WCF 服务?
问题描述
我们有一个运行在 SharePoint(WSS 和 201x)之上的 CRM/ERP Web 应用程序(ASP.Net Forms)。另一方面,我们通过 WCF 服务将 Office (WPF) 加载项紧密集成到 Web 应用程序中。
两者都在三个方面严重依赖 WCF 服务项目:
- 从后面的代码调用的 WCF 服务
- 使用 webhttpbinding / enablewebscript 启用 AJAX 的客户端 Web 服务
- 从加载项调用的 WCF 服务。
但是,存在安全问题。在我们当前的设置中,WCF 服务需要设置为匿名身份验证。否则,我们的 Web 应用程序和加载项将无法使用当前配置工作。
我们的目标:以某种方式禁用对 WCF 服务的匿名访问,而不会破坏 Web 应用程序或加载项。
事实证明,这比预期的要简单得多。
这是我们的典型设置:
- 扩展的 SharePoint 网站 (WSS / 201x)。备用访问映射配置:
- 默认值:活动目录、NTLM。
- Intranet:会员资格提供者,匿名访问。
- ASP.Net Web 应用程序在主 SharePoint Web 应用程序中运行(IIS 中没有子 Web 应用程序)。
- WCF 服务项目在 IIS 中配置为 SharePoint Web 应用程序下方的“子”Web 应用程序。
到目前为止,这是我们想出的:
- 在 WCF 服务 web.config 中添加
- 将Windows 身份验证 -> 高级设置更改为以下内容:
- 扩展保护:接受
- [X]启用内核模式认证
- 使用 clientCredentialType Ntlm将加载项和 Web 应用程序的客户端绑定配置更改为安全模式TransportCredentialOnly。
上述解决方案适用于我们在上述三个地方的 SharePoint 2007 测试环境。
但是,在 SharePoint 201x 中,我们无法让 Web 应用程序中的 WCF 调用正常工作。至少不使用与加载项相同的客户端绑定(而来自加载项的 WCF 调用也适用于 SharePoint 2013)。
我们得到的错误信息是:No credentials are available in the security package。我们遇到的另一个问题是:Provider type not defined。(来自 HRESULT 的异常:0x80090017)
问题:我们如何在 SharePoint Web 应用程序和 WPF 中以非匿名方式使用 WCF 服务?
关于如何在这种情况下配置和调用这些的任何想法?(不管怎样)
非常感谢您对此的任何想法!
解决方案
推荐阅读
- c# - 方法在没有返回的情况下中断
- javascript - 所有手风琴面板同时打开?
- android - 如何访问 Android/data/com.xyz .... 中的应用程序文件?
- javascript - 我的代码不会在屏幕上绘制图像
- c++ - 在光线跟踪中获得球体上的荒谬反射
- ios - 如何在不使用故事板和/或 IBOutlets 的情况下结合 ARKit 和 SwiftUI?
- swift - 使用 CoreData 进行 Swift 包单元测试
- javascript - Chrome Gmail extension does not work in certain circumstances. Why?
- sql - Trouble inserting value into a TEXT column with Postgres
- angular - How to assign an object from an array to a variable?