Procedure: Windows Communication Foundation-beveiligingsgebeurtenissen controleren
Met Windows Communication Foundation (WCF) kunt u beveiligingsgebeurtenissen vastleggen in het Windows-gebeurtenislogboek, dat kan worden weergegeven met behulp van de Windows-Logboeken. In dit onderwerp wordt uitgelegd hoe u een toepassing zo instelt dat er beveiligingsevenementen worden vastgelegd. Zie Controle voor meer informatie over WCF-controle.
Beveiligingsgebeurtenissen in code controleren
Geef de locatie van het auditlogboek op. Hiervoor stelt u de AuditLogLocation eigenschap van de ServiceSecurityAuditBehavior klasse in op een van de AuditLogLocation opsommingswaarden, zoals wordt weergegeven in de volgende code.
// Create a new auditing behavior and set the log location. ServiceSecurityAuditBehavior newAudit = new ServiceSecurityAuditBehavior(); newAudit.AuditLogLocation = AuditLogLocation.Application;
' Create a new auditing behavior and set the log location. Dim newAudit As New ServiceSecurityAuditBehavior() newAudit.AuditLogLocation = AuditLogLocation.Application
De AuditLogLocation opsomming heeft drie waarden:
Application
,Security
ofDefault
. De waarde geeft een van de logboeken op die zichtbaar zijn in de Logboeken, ofwel het beveiligingslogboek of het toepassingslogboek. Als u deDefault
waarde gebruikt, is het werkelijke logboek afhankelijk van het besturingssysteem waarop de toepassing wordt uitgevoerd. Als controle is ingeschakeld en de logboeklocatie niet is opgegeven, isSecurity
het standaardlogboek voor platforms die ondersteuning bieden voor het schrijven naar het beveiligingslogboek. Anders wordt er naar hetApplication
logboek geschreven. Alleen Windows Server 2003 en Windows Vista ondersteunen standaard het schrijven naar het beveiligingslogboek.Stel de typen gebeurtenissen in die moeten worden gecontroleerd. U kunt gebeurtenissen op serviceniveau of autorisatiegebeurtenissen op berichtniveau tegelijk controleren. Hiervoor stelt u de ServiceAuthorizationAuditLevel eigenschap of eigenschap MessageAuthenticationAuditLevel in op een van de AuditLevel opsommingswaarden, zoals wordt weergegeven in de volgende code.
// Create a new auditing behavior and set the log location. ServiceSecurityAuditBehavior newAudit = new ServiceSecurityAuditBehavior(); newAudit.AuditLogLocation = AuditLogLocation.Application; newAudit.MessageAuthenticationAuditLevel = AuditLevel.SuccessOrFailure; newAudit.ServiceAuthorizationAuditLevel = AuditLevel.SuccessOrFailure;
newAudit.MessageAuthenticationAuditLevel = _ AuditLevel.SuccessOrFailure newAudit.ServiceAuthorizationAuditLevel = _ AuditLevel.SuccessOrFailure
Geef op of fouten in de toepassing moeten worden onderdrukt of weergegeven met betrekking tot auditgebeurtenissen in logboeken. Stel de SuppressAuditFailure eigenschap in op of
false
true
, zoals wordt weergegeven in de volgende code.// Create a new auditing behavior and set the log location. ServiceSecurityAuditBehavior newAudit = new ServiceSecurityAuditBehavior(); newAudit.AuditLogLocation = AuditLogLocation.Application; newAudit.MessageAuthenticationAuditLevel = AuditLevel.SuccessOrFailure; newAudit.ServiceAuthorizationAuditLevel = AuditLevel.SuccessOrFailure; newAudit.SuppressAuditFailure = false;
newAudit.SuppressAuditFailure = False
De standaardeigenschap
SuppressAuditFailure
istrue
, zodat de fout bij het controleren niet van invloed is op de toepassing. Anders wordt er een uitzondering gegenereerd. Voor een geslaagde controle wordt een uitgebreide tracering geschreven. Voor elke fout bij het controleren wordt de tracering geschreven op foutniveau.Verwijder de bestaande ServiceSecurityAuditBehavior uit de verzameling gedrag die in de beschrijving van een ServiceHost. De gedragverzameling wordt geopend door de Behaviors eigenschap, die op zijn beurt toegankelijk is vanuit de Description eigenschap. Voeg vervolgens de nieuwe ServiceSecurityAuditBehavior toe aan dezelfde verzameling, zoals wordt weergegeven in de volgende code.
// Remove the old behavior and add the new. serviceHost.Description. Behaviors.Remove<ServiceSecurityAuditBehavior>(); serviceHost.Description.Behaviors.Add(newAudit);
' Remove the old behavior and add the new. serviceHost.Description.Behaviors.Remove(Of ServiceSecurityAuditBehavior) serviceHost.Description.Behaviors.Add(newAudit)
Controle instellen in configuratie
Als u controle in de configuratie wilt instellen, voegt u een <gedragselement> toe aan de< sectie gedrag> van het web.config-bestand. Voeg vervolgens een <serviceSecurityAudit-element> toe en stel de verschillende kenmerken in, zoals wordt weergegeven in het volgende voorbeeld.
<behaviors> <behavior name="myAuditBehavior"> <serviceSecurityAudit auditLogLocation="Application" suppressAuditFailure="false" serviceAuthorizationAuditLevel="None" messageAuthenticationAuditLevel="SuccessOrFailure" /> </behavior> </behaviors>
U moet het gedrag voor de service opgeven, zoals wordt weergegeven in het volgende voorbeeld.
<services> <service type="WCS.Samples.Service.Echo" behaviorConfiguration=" myAuditBehavior"> <endpoint address="" binding="wsHttpBinding" bindingConfiguration="CertificateDefault" contract="WCS.Samples.Service.IEcho" /> </service> </services>
Opmerking
Met de volgende code maakt u een exemplaar van de ServiceHost klasse en voegt u een nieuw ServiceSecurityAuditBehavior exemplaar toe aan de verzameling gedrag.
public static void Main()
{
// Get base address from appsettings in configuration.
Uri baseAddress = new Uri(ConfigurationManager.
AppSettings["baseAddress"]);
// Create a ServiceHost for the CalculatorService type
// and provide the base address.
using (ServiceHost serviceHost = new
ServiceHost(typeof(CalculatorService), baseAddress))
{
// Create a new auditing behavior and set the log location.
ServiceSecurityAuditBehavior newAudit =
new ServiceSecurityAuditBehavior();
newAudit.AuditLogLocation =
AuditLogLocation.Application;
newAudit.MessageAuthenticationAuditLevel =
AuditLevel.SuccessOrFailure;
newAudit.ServiceAuthorizationAuditLevel =
AuditLevel.SuccessOrFailure;
newAudit.SuppressAuditFailure = false;
// Remove the old behavior and add the new.
serviceHost.Description.
Behaviors.Remove<ServiceSecurityAuditBehavior>();
serviceHost.Description.Behaviors.Add(newAudit);
// Open the ServiceHostBase to create listeners
// and start listening for messages.
serviceHost.Open();
// The service can now be accessed.
Console.WriteLine("The service is ready.");
Console.WriteLine("Press <ENTER> to terminate service.");
Console.WriteLine();
Console.ReadLine();
// Close the ServiceHostBase to shutdown the service.
serviceHost.Close();
}
}
Public Shared Sub Main()
' Get base address from appsettings in configuration.
Dim baseAddress As New Uri(ConfigurationManager.AppSettings("baseAddress"))
' Create a ServiceHost for the CalculatorService type
' and provide the base address.
Dim serviceHost As New ServiceHost(GetType(CalculatorService), baseAddress)
Try
' Create a new auditing behavior and set the log location.
Dim newAudit As New ServiceSecurityAuditBehavior()
newAudit.AuditLogLocation = AuditLogLocation.Application
newAudit.MessageAuthenticationAuditLevel = _
AuditLevel.SuccessOrFailure
newAudit.ServiceAuthorizationAuditLevel = _
AuditLevel.SuccessOrFailure
newAudit.SuppressAuditFailure = False
' Remove the old behavior and add the new.
serviceHost.Description.Behaviors.Remove(Of ServiceSecurityAuditBehavior)
serviceHost.Description.Behaviors.Add(newAudit)
' Open the ServiceHostBase to create listeners
' and start listening for messages.
serviceHost.Open()
' The service can now be accessed.
Console.WriteLine("The service is ready.")
Console.WriteLine("Press <ENTER> to terminate service.")
Console.WriteLine()
Console.ReadLine()
' Close the ServiceHostBase to shutdown the service.
serviceHost.Close()
Finally
End Try
End Sub
.NET Framework-beveiliging
Als u de SuppressAuditFailure eigenschap true
instelt op , onderdrukt u eventuele fouten bij het genereren van beveiligingscontroles (indien ingesteld op false
, wordt er een uitzondering gegenereerd). Als u echter de volgende eigenschap lokale beveiligingsinstelling van Windows inschakelt, zorgt een fout bij het genereren van controlegebeurtenissen ervoor dat Windows onmiddellijk wordt afgesloten:
Controle: Systeem onmiddellijk afsluiten als er geen beveiligingscontroles kunnen worden geregistreerd
Als u de eigenschap wilt instellen, opent u het dialoogvenster Lokale beveiliging Instellingen. Klik onder Beveiliging Instellingen op Lokaal beleid. Klik vervolgens op Beveiligingsopties.
Als de AuditLogLocation eigenschap is ingesteld op Security en De toegang tot het auditobject niet is ingesteld in het lokale beveiligingsbeleid, worden controlegebeurtenissen niet naar het beveiligingslogboek geschreven. Houd er rekening mee dat er geen fout wordt geretourneerd, maar controlevermeldingen worden niet naar het beveiligingslogboek geschreven.