0

有sharepoint 2003。开发的Web 部件。

当用户访问 Web 部件时,然后在服务器端通过身份验证。

我需要在 Web 部件中向 Web 应用程序发送请求。当我向部署 Web 应用程序的服务器发送请求时,尝试登录部署 Web 部件的服务器帐户。

当我向部署它的服务器发送请求时,我需要它 用于对访问 Web 部件的用户帐户进行身份验证的 Web 应用程序。

身份验证类型:NTLM

Web 部件如何转向访问该 Web 部件的用户名的 Web 应用程序?


找到了两种可能的解决方案:

1.在WebPart中添加Web.config,内容如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.web>
    <authentication mode="Windows" />
    <identity impersonate="true" />
  </system.web>
</configuration>

它没有帮助。目前尚不清楚为什么。

2.使用以下代码:

        WindowsIdentity winId = (WindowsIdentity)Context.User.Identity;
        WindowsImpersonationContext ctx = null;

        try
        {
            // Start impersonating.
            ctx = winId.Impersonate();
            // Now impersonating.
            // Access resources using the identity of the authenticated user.
            _autocompleteService.SendParametersForAutoComplete(_loger,
                        new KeyValuePairString("performerId", performerId),
                        new KeyValuePairString("templatePath",
                                                StringConverter.EncodeToURL(templatePath)),
                        new KeyValuePairString("specificationId", specificationId),
                        new KeyValuePairString("buyerId", buyerId),
                        new KeyValuePairString("performerCompanyId", performerCompanyId),
                        new KeyValuePairString("reestrItemId", reestrItemId),
                        new KeyValuePairString("sessionId", sessionId));
        }
        // Prevent exceptions from propagating.
        catch
        {
        }
        finally
        {
            if (ctx != null) ctx.Undo();
        }

此代码取自链接:http: //msdn.microsoft.com/en-us/library/aa480475.aspx

它没有帮助。目前尚不清楚为什么。

在这两种情况下可能是什么原因?

4

1 回答 1

0

找到了答案 - 为什么第二个变体不起作用。

模拟用户时,您可以作为该用户访问本地资源,但不能访问远程资源。

如何使用第一个选项解决问题?

于 2013-06-19T07:58:26.397 回答