Procedura: richiedere un token da c2WTS

Nell'esempio di codice seguente viene illustrato come richiedere un token da e utilizzarlo per rappresentare l'utente. Per ulteriori informazioni, vedere Cenni preliminari su Claims to Windows Token Service (c2WTS).

// Ottenere l'identità corrente ed estrarre l'attestazione 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; } }

// Eseguire l'accesso UPN tramite c2WTS. WindowsIdentity windowsIdentity = null; if ( !String.IsNullOrEmpty( upn ) ) { try { windowsIdentity = S4UClient.UpnLogon( upn ); } catch ( SecurityAccessDeniedException ) { Console.WriteLine( "Could not map the upn claim to a valid windows identity." ); return; } } else { throw new Exception( "No UPN claim found" ); }

using ( WindowsImpersonationContext ctxt = windowsIdentity.Impersonate() ) { // Accedere alla risorsa. }

Un amministratore deve configurare con un elenco di chiamanti consentiti, che corrisponde all'elenco di ID di sicurezza (SID) nell'elemento allowedCallers nella sezione Microsoft.IdentityModel del file di configurazione c2wtshost.exe.config, presente nella cartella della versione all'interno della cartella di installazione di WIF. Se, ad esempio, la versione 3.5 di WIF è stata installata in C:\Program Files, il file c2wtshost.exe.config si trova nella cartella C:\Program Files\Windows Identity Foundation\v3.5. Di seguito è riportato un esempio:

<?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> <!-- Per impostazione predefinita, a nessun chiamante è consentito utilizzare Claims to Windows Token Service. Aggiungere sotto le identità che si desidera consentire. --> <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>