Каков наилучший способ получения WindowsIdentity из ClaimsIdentity - PullRequest
3 голосов
/ 18 февраля 2011

До сих пор я нашел два решения для получения объекта WindowsIdentity из ClaimsIdentity. Сначала я извлекаю имя пользователя (upn).

ClaimsIdentity ci = (ClaimsIdentity) Thread.CurrentPrincipal.Identity;    
string upn = null;
foreach (Claim c in ci.Claims)
{
    if (c.ClaimType == ClaimTypes.Upn)
    {
        upn = c.Value;
        break;
    }
}
  1. Просто вызовите конструктор WindowsIdentity с помощью upn:

    WindowsIdentity winId = новый WindowsIdentity (upn);

  2. Использовать утверждения для службы токенов Windows (c2WTS):

    WindowsIdentity winId = S4UClient.UpnLogon (upn);

Решение 1 кажется мне более простым и легким решением, но тогда я не понимаю цели c2WTS?

Есть предложения?

Тпх!

1 Ответ

2 голосов
/ 23 мая 2011
  1. WindowsIdentity winId = S4UClient.UpnLogon(upn);

Используется службами Excel и PerformancePoint.

Кешируется, когда-то использовался. Есть и другие проверки против этого.

...