Delen via


Toegang tot servicebewerkingen autoriseren

In dit voorbeeld ziet u hoe u de <serviceAuthorization> gebruikt om het gebruik van het PrincipalPermissionAttribute kenmerk in te schakelen voor het autoriseren van toegang tot servicebewerkingen. Dit voorbeeld is gebaseerd op het voorbeeld Aan de slag . De service en client worden geconfigureerd met behulp van wsHttpBinding><. Het mode kenmerk van de <beveiliging> is ingesteld op Message en clientCredentialType is ingesteld op Windows. De PrincipalPermissionAttribute methode wordt toegepast op elke servicemethode en wordt gebruikt om de toegang tot elke bewerking te beperken. De beller moet een Windows-beheerder zijn om toegang te krijgen tot elke bewerking.

In dit voorbeeld is de client een consoletoepassing (.exe) en wordt de service gehost door Internet Information Services (IIS).

Notitie

De installatieprocedure en build-instructies voor dit voorbeeld bevinden zich aan het einde van dit onderwerp.

Het serviceconfiguratiebestand maakt gebruik van de <serviceAuthorization> om het principalPermissionMode kenmerk in te stellen:

<behaviors>
  <serviceBehaviors>
    <behavior>
      <!-- The serviceAuthorization behavior sets the
           principalPermissionMode to UseWindowsGroups.
           This puts a WindowsPrincipal on the current thread when a
           service is invoked. -->
      <serviceAuthorization principalPermissionMode="UseWindowsGroups" />
    </behavior>
  </serviceBehaviors>
</behaviors>

Als u de principalPermissionMode instelling instelt om het gebruik van op basis van PrincipalPermissionAttribute Windows-groepsnamen in te UseWindowsGroups schakelen.

De PrincipalPermissionAttribute bewerking wordt toegepast op elke bewerking om te vereisen dat de aanroeper deel uitmaakt van de Windows-beheerdersgroep, zoals wordt weergegeven in de volgende voorbeeldcode.

[PrincipalPermission(SecurityAction.Demand,
                             Role = "Builtin\\Administrators")]
public double Add(double n1, double n2)
{
    double result = n1 + n2;
    return result;
}

Wanneer u het voorbeeld uitvoert, worden de bewerkingsaanvragen en -antwoorden weergegeven in het clientconsolevenster. De client communiceert met elke bewerking als deze wordt uitgevoerd onder een account dat deel uitmaakt van de groep Beheer istrators; anders wordt de toegang geweigerd. Als u wilt experimenteren met autorisatiefouten, voert u de client uit onder een account dat geen deel uitmaakt van de groep Beheer istrators. Druk op Enter in het consolevenster om de client af te sluiten.

Een service kan worden gewaarschuwd voor autorisatiefouten door een IErrorHandler. Zie Het uitbreiden van controle over foutafhandeling en rapportage voor informatie over de implementatie IErrorHandler.

Het voorbeeld instellen, compileren en uitvoeren

  1. Zorg ervoor dat u de eenmalige installatieprocedure voor de Windows Communication Foundation-voorbeelden hebt uitgevoerd.

  2. Als u de C# of Visual Basic .NET-editie van de oplossing wilt bouwen, volgt u de instructies in het bouwen van de Windows Communication Foundation-voorbeelden.

  3. Als u het voorbeeld wilt uitvoeren in een configuratie van één of meerdere computers, volgt u de instructies in Het uitvoeren van de Windows Communication Foundation-voorbeelden.