Vorgehensweise: Anfordern eines Tokens vom c2WTS

Das folgende Codebeispiel zeigt, wie ein Token vom angefordert und verwendet wird, um die Identität des Benutzers anzunehmen. Weitere Informationen finden Sie unter Übersicht über Claims to Windows Token Service (C2WTS).

// Ruft die aktuelle Identität ab und extrahiert den UPN-Anspruch. 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; } }

// Führt die UPN-Anmeldung über den C2WTS aus. 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() ) { // Zugriff auf die Ressource. }

Der Administrator muss den mit einer Liste zulässiger Aufrufer konfigurieren. Dabei handelt es sich um die Liste der Sicherheits-IDs (SIDs), die sich in Ihrem WIF-Installationsordner im Versionsordner in der Konfigurationsdatei c2wtshost.exe.config im Abschnitt Microsoft.IdentityModel im allowedCallers-Element befindet. Wenn z. B. Version 3.5 von WIF unter C:\Program Files installiert wurde, befindet sich die Datei c2wtshost.exe.config im Ordner C:\Program Files\Windows Identity Foundation\v3.5 Im Folgenden finden Sie ein Beispiel:

<?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> <!-- In der Standardeinstellung darf "Claims to Windows Token Service" von Aufrufern nicht verwendet werden. Fügen Sie nachfolgend die Identitäten hinzu, die Sie zulassen möchten. --> <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>