2013-06-19 2 views
0

Имеется sharepoint 2003. Разработана веб-часть.Аутентификация при обращении к веб-приложению веб-части Sharepoint 2003

Когда пользователь обращается к веб-части и передает аутентификацию на стороне сервера.

Мне нужно в веб-части отправить запрос в веб-приложение. Когда я отправляю запрос на сервер, на котором развернуто веб-приложение, пытается зарегистрироваться в учетной записи сервера, где развернута веб-часть.

И мне это нужно, когда я отправляю запрос на сервер, на котором развернуто веб-приложение, используемое для аутентификации учетной записи пользователя, которая обращается к веб-части.

Тип аутентификации: NTLM

Как часть Web может обратиться к веб-приложение от имени пользователя, который получил доступ к веб-части?


Найдено два возможных решения:

1.Add Web.config в WebPart со следующим содержанием:

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

Это не поможет , Непонятно, почему.

2.Use следующий код:

 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

Это не поможет. Непонятно, почему.

В чем может быть причина в обоих случаях?

ответ

0

нашел ответ - почему не работает второй вариант.

Когда вы олицетворяете пользователя, вы можете обращаться к локальным ресурсам как к пользователю , но не к удаленным ресурсам.

Как решить проблему, используя первый вариант?

 Смежные вопросы

  • Нет связанных вопросов^_^