ASP.NET-Sicherheitstokendienst-Website

Warnung

Fügen Sie einem ASP.NET-STS-Projekt keine STS-Verweise hinzu, indem Sie mit der rechten Maustaste auf das Projekt klicken und die entsprechende Option auswählen. Andernfalls werden die Metadaten des STS überschrieben.

Öffnen Sie in Visual Studio das Menü "Datei", und wählen Sie "Neu" und dann "Website" aus. Wählen Sie "ASP.NET Security Token Service-Website" aus.

Beachten Sie, dass sich die Datei "web.config" in einer Reihe von Punkten von einer Datei "web.config" für eine typische ASP.NET-Website unterscheidet.

  • Die folgenden Anwendungseinstellungen wurden hinzugefügt:

    <appSettings> <add key="IssuerName" value="PassiveSigninSTS"/> <add key="SigningCertificateName" value="CN=STSTestCert"/> <add key="EncryptingCertificateName" value=""/> </appSettings>
    

    Der STS verwendet ein Standardzertifikat zum Signieren der ausgegebenen Tokens. Dieses Zertifikat erhält den Namen "STSTestCert" und wird dem Zertifikatspeicher zur Verwendung durch den STS automatisch hinzugefügt. Die Zertifikatdatei ist im STS-Projekt vorhanden. Das Kennwort für die Datei lautet "STSTest". Es sollte nicht in einer Produktionsübung verwendet werden. Sie können das Standardzertifikat durch ein beliebiges anderes Zertifikat ersetzen. Stellen Sie sicher, dass der Benutzer für den IIS-Prozess Zugriff auf die privaten Schlüssel solcher Zertifikate hat. Sie können auch einen von IssuerNameRegistry abgeleiteten Typ erstellen, um die Zertifikate der vertrauenswürdigen Aussteller programmgesteuert zu überprüfen.

  • Allen Benutzern wurde Zugriff auf die Verbundmetadaten gewährt. Die Verbundmetadaten enthalten Informationen zum öffentlichen Schlüssel des Tokensignaturzertifikats, zu den vom STS verfügbar gemachten Endpunkten und zu den ausgestellten Ansprüchen.

    <location path="FederationMetadata"> <system.web> <authorization> <allow users="*" /> </authorization> </system.web> </location>
    
  • Das Element <system.Web>/<assemblies> enthält jetzt einen Verweis auf die Assembly "Microsoft.IdentityModel.dll":

    <add assembly="Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    
  • Formularauthentifizierung und eine Anmeldeseite werden angegeben:

    <authentication mode="Forms"> <forms loginUrl="Login.aspx" protection="All" timeout="30" name=".ASPXAUTH" path="/" requireSSL="false" slidingExpiration="true" defaultUrl="default.aspx" cookieless="UseDeviceProfile" enableCrossAppRedirects="false" /> </authentication> <!-- Verweigern anonymer Benutzer. --> <authorization> <deny users="?" /> </authorization>
    
  • Eine Ablaufverfolgung wurde hinzugefügt, für die Sie die Auskommentierung aufheben können, um sie zu aktivieren. Weitere Informationen finden Sie unter WIF-Ablaufverfolgung und Aktivieren der Ablaufverfolgung.

    <!-- Heben Sie die Auskommentierung der folgenden Zeilen auf, um die WIF-Ablaufverfolgung zu aktivieren: WIFTrace.e2e. Öffnen Sie die Ablaufverfolgungsdatei mit dem Tool "SvcTraceViewer.exe" (im Lieferumfang des von Microsoft erhältlichen WCF SDK enthalten) oder mit einem XML-Viewer. Wenn Sie die WCF-Ablaufverfolgung hinzufügen möchten, finden Sie weitere Informationen im MSDN. -->
    
      <!--<system.diagnostics> <sources> <source name="Microsoft.IdentityModel" switchValue="Verbose"> <listeners> <add name="xml" type="System.Diagnostics.XmlWriterTraceListener" initializeData="WIFTrace.e2e" /> </listeners> </source> </sources> <trace autoflush="true" /> </system.diagnostics>-->
    

Öffnen Sie im Ordner "App_Code" die Datei "CustomSecurityTokenService.cs".

  • Aktualisieren Sie static readonly string[] PassiveRedirectBasedClaimsAwareWebApps, sodass die URLs der Anwendungen der vertrauenden Seite enthalten sind, für die dieser STS Token ausstellen soll.

  • Fügen Sie beim Überschreiben der GetOutputClaimsIdentity-Methode die Ansprüche hinzu, deren Ausstellung durch den STS für die Anwendung der vertrauenden Seite erforderlich ist, sowie alle anderen Ansprüche, die vom STS ausgestellt werden sollen.

"CustomSecurityTokenService.cs" implementiert die folgenden erforderlichen Methoden.

  1. GetScope. Dieser Methode wird der IClaimsPrincipal des Aufrufers sowie der eingehende RST übergeben und sie gibt die Konfiguration für die Tokenausstellungsanforderung zurück, die durch die Scope-Klasse dargestellt wird. In dieser Methode können Sie die Adresse der vertrauenden Seite normalisieren und Signierungs- sowie Verschlüsselungsschlüssel auswählen. Sicherheitstokens werden in der Regel verschlüsselt, sodass sie nur von der vertrauenden Seite gelesen werden können.

  2. GetOutputClaimsIdentity. Dieser Methode wird der IClaimsPrincipal des Aufrufers, der eingehende RST sowie das Scope-Objekt übergeben, das von GetScope zurückgegeben wird, und sie gibt die IClaimsIdentity zurück, die im ausgestellten Token enthalten sein soll. Hierdurch können Sie entscheiden, welche Ansprüche im Token enthalten sein sollen.