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>