В следующем примере кода показано, как запросить маркер в службе Служба c2WTS (Claims to Windows Token Service) и использовать его для олицетворения пользователя. Дополнительные сведения см. в разделе Общие сведения о службе c2WTS (Claims to Windows Token Service).
Копировать код | |
---|---|
// Получение текущего удостоверения и извлечение утверждения UPN. IClaimsIdentity identity = ( ClaimsIdentity )Thread.CurrentPrincipal.Identity; string upn = null; foreach ( Claim claim in identity.Claims ) { if ( StringComparer.Ordinal.Equals( System.IdentityModel.Claims.ClaimTypes.Upn, claim.ClaimType ) ) { upn = claim.Value; } } // Вход с использованием UPN через c2WTS. WindowsIdentity windowsIdentity = null; if ( !String.IsNullOrEmpty( upn ) ) { try { windowsIdentity = S4UClient.UpnLogon( upn ); } catch ( SecurityAccessDeniedException ) { Console.WriteLine( "Не удалось отобразить утверждение UPN в действительное удостоверение Windows." ); return; } } else { throw new Exception( "Не найдено утверждение UPN" ); } using ( WindowsImpersonationContext ctxt = windowsIdentity.Impersonate() ) { // Доступ к ресурсу. } |
Администратор должен настроить c2WTS, задав список
разрешенных вызывающих сторон (т. е. список идентификаторов
безопасности) в элементе allowedCallers
в разделе
Microsoft.IdentityModel
файла конфигурации
c2wtshost.exe.config
, расположенного в папке
соответствующей версии внутри папки установки WIF. Например, если
установлена версия WIF 3.5 в папке C:\Program Files
,
файл c2wtshost.exe.config
будет находиться в папке
C:\Program Files\Windows Identity Foundation\v3.5
.
Пример настройки конфигурации:
Копировать код | |
---|---|
<?xml version="1.0"?> <configuration> <configSections> <section name="windowsTokenService" type="Microsoft.IdentityModel.WindowsTokenService.Configuration.WindowsTokenServiceSection, Microsoft.IdentityModel.WindowsTokenService, Version=0.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> </configSections> <windowsTokenService> <!-- По умолчанию никому не разрешается использовать Claims to Windows Token Service. Добавьте далее удостоверения, которым следует это разрешить. --> <allowedCallers> <clear/> <!-- <add value="NT AUTHORITY\Network Service" /> --> <!-- <add value="NT AUTHORITY\Local Service" /> --> <!-- <add value="NT AUTHORITY\System" /> --> <!-- <add value="NT AUTHORITY\Authenticated Users" /> --> </allowedCallers> </windowsTokenService> </configuration> |