Как мне выполнить олицетворение WIF / претензий без сопоставления претензии с учетной записью AD?

Мне нужно выполнить олицетворение при поиске в SharePoint 2010 для пользователей утверждений. Чтобы поместить это в контекст, я хотел бы сначала указать, как я могу заставить это работать с учетными записями Windows, а затем обсудить утверждения / WIF.

Учетные записи Windows

Я могу сделать это для «классических» пользователей с интегрированной аутентификацией Windows, используя:

WindowsImpersonationContext wic = null;
try
{  
    WindowsIdentity impersonatedUser = new WindowsIdentity("john.doe@mydomain");
    wic = impersonatedUser.Impersonate();

    // do impersonated work here...
    // in my case this is a SharePoint KeywordQuery
}
finally
{
    if (wic != null)
    {
        wic.Undo();
    }
}

Чтобы описанное выше работало, олицетворенная учетная запись должна находиться в том же домене, что и текущий пользователь, и я должен убедиться, что владельцем пула приложений является:

  • Учетная запись домена в домене, который имеет "функциональный домен" уровень "Windows 2003 или выше
  • Имеет привилегию" действовать как часть операционной системы "на локальном компьютере
  • Имеет" олицетворять клиента после аутентификации " привилегия на локальном ящике

(Примечание: если кто-то может понять, как обойти проблему, когда текущая учетная запись должна находиться в том же домене, что и олицетворенная учетная запись, я все слышу.)

Заявления об учетных записях

Я хотел бы сделать то же самое со счетами Claims / WIF. Эти учетные записи не обязательно связаны с учетными записями AD (я должен предположить, что это не так).

Есть ли способ сообщить службе STS, что я хочу выдать себя за конкретную учетную запись, и чтобы он дал мне соответствующий токен для этой учетной записи? У меня не будет пароля пользователя, которого я выдаю за себя.

Цитата SharePoint Brew Мне приходится бороться с моим кодом, который выполняется на веб-интерфейсе SharePoint (WFE), который вызывает обработчик запросов через вызов WCF. Я хочу, чтобы этот вызов WCF выполнялся в контексте олицетворенного пользователя.

The WFE ' Веб-часть поиска s (Server1) обращается к прокси-серверу приложения-службы. Связанный прокси-сервер приложения службы поиска вызывает локальную службу STS, чтобы получить маркер SAML для пользователя. После сбора токена SAML прокси приложения службы поиска вызывает сервер, на котором запущен обработчик запросов, через вызов WCF. Я назову этот сервер «Сервер 2». Сервер 2 получает входящий запрос и проверяет токен SAML на своей локальной STS. После проверки Сервер 2 подключается к различным компонентам для сбора, объединения и защиты результатов поиска. Сервер 2 отправляет обрезанные результаты поиска обратно на Сервер 1, которые затем представляются пользователю.

Немного больше исследований заставляет меня взглянуть на ActAs и OnBehalfOf . Я считаю, что хотел бы использовать OnBehalfOf, но я не уверен, что оба варианта будут работать. Некоторые ссылки, которые я нашел, перечислены ниже. Приветствуются любые рекомендации.

35
задан Kirk Liemohn 7 March 2011 в 20:47
поделиться