Аутентификация при обращении к веб-приложению веб-части Sharepoint 2003
Есть sharepoint 2003. Разработана веб-часть.
Когда пользователь обращается к веб-части, проходит проверку подлинности на стороне сервера.
Мне нужно в веб-части отправить запрос в веб-приложение. Когда я отправляю запрос на сервер, где развернуто веб-приложение, пытаюсь войти в учетную запись сервера, где развернута веб-часть.
И мне это нужно, когда я отправляю запрос на сервер, на котором развернуто веб-приложение, используемое для аутентификации учетной записи пользователя, который обращается к веб-части.
Тип аутентификации: NTLM
Как веб-часть может превратиться в веб-приложение с именем пользователя, который обращается к веб-части?
Найдены два возможных решения:
1. Добавьте Web.config в WebPart со следующим содержимым:
<?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
Это не помогает. Не понятно почему.
В чем может быть причина в обоих случаях?
1 ответ
Нашел ответ - почему не работает второй вариант.
Когда вы олицетворяете пользователя, вы можете получить доступ к локальным ресурсам как этот пользователь, но не к удаленным ресурсам.
Как я могу решить проблему, используя первый вариант?