【问题标题】:.NET One Hop Rule and SharePoint Webparts.NET 单跳规则和 SharePoint Webparts
【发布时间】:2010-10-13 20:17:07
【问题描述】:

您好,我有一个 SharePoint Webpart,它被编译为 DLL 并放置在我的 SP 站点的 BIN 文件夹中。我的 webpart 在我的本地机器上工作,但是当我把它投入生产时它失败了

(401) Unauthorized.

在做了一些研究之后,我发现了所谓的“单跳规则”。这意味着我必须传递网络用户的凭据,或者使用

<identity impersonate= "true" />

在我的 web.config 中。我不想硬编码网络用户,所以我的问题是如何在我的 Web 部件中使用模拟? dll 是否支持 web.configs?感谢您的帮助。

【问题讨论】:

    标签: .net security sharepoint web-parts identity


    【解决方案1】:

    您的 webpart 生产失败可能是因为 CAS;您可能需要提升权限级别或附加要授予您的程序集的特殊访问权限,因为它不完全受信任,因为它位于 bin 文件夹中。

    如果你确定这只是一个模拟问题,你能不能只在 web.config 中使用节点?

    【讨论】:

    • 它以前在生产中工作过,我刚刚应用了一些安全补丁,但它停止工作,所以我觉得它与模拟有关。我之前使用的是 DefaultNetworkCredentials。
    • 安全补丁可能已将 bin 目录的 web.config 安全模型从完全信任或中等信任更改为最低信任。当您使用 CAS 和 SharePoint 部署时,它会将其更改为自定义信任级别。
    【解决方案2】:

    在 SharePoint 应用程序的 web.config 中,Impersonate 始终设置为 true,因此问题肯定出在其他地方。部署到 Web 应用程序的 BIN 文件夹的 Web 部件在沙箱中运行,并且默认情况下具有有限的权限。也许这就是问题的根源。

    【讨论】:

    • 是的,我也相信,这就是问题所在,我该怎么办?
    【解决方案3】:

    是的,正如 Tudor 所提到的,这很可能是代码访问安全性。如果你把它放在 GAC 中,你就不会有这个问题(GAC 是完全信任的)。

    这里有几篇文章可以帮助您使用 CAS 和 SharePoint Web 部件。诀窍是知道您需要哪些 IPermission。

    【讨论】:

      【解决方案4】:

      我认为没有办法在 DLL 中添加它。反正据我所知。

      【讨论】:

        【解决方案5】:

        如果您正在查看“双跳”问题,那么您将不会使用 NTLM。您需要使用 Kerberos 身份验证,因为 Kerberos 票证可以从用户跳到 Web 服务器再到 Web 服务。您需要使用 SetSPN 设置服务主体名称。

        此 Web 部件是否调用外部 Web 服务?还是基于本地安全的权限错误?

        【讨论】:

          猜你喜欢
          • 2010-11-26
          • 2023-03-30
          • 2010-11-27
          • 2018-06-21
          • 1970-01-01
          • 2010-11-23
          • 2010-12-12
          • 1970-01-01
          相关资源
          最近更新 更多