До сих пор я нашел два решения для получения объекта 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;
}
}
Просто вызовите конструктор WindowsIdentity с помощью upn:
WindowsIdentity winId = новый WindowsIdentity (upn);
Использовать утверждения для службы токенов Windows (c2WTS):
WindowsIdentity winId = S4UClient.UpnLogon (upn);
Решение 1 кажется мне более простым и легким решением, но тогда я не понимаю цели c2WTS?
Есть предложения?
Тпх!