Gewusst wie: Zulassen von Metadatenanforderungen während der AutorisierungHow To: Allow Metadata Requests While Authorizing

Während der benutzerdefinierten Autorisierung ist es möglicherweise notwendig, eine Anforderung für Metadaten zuzulassen, die verarbeitet werden sollten.During custom authorization, it may be necessary to allow a request for metadata to be processed. Das folgende Thema durchläuft die Schritte, um so eine Anforderung zu überprüfen.The following topic walks through the steps to validate such a request.

Weitere Informationen zur Autorisierung von Windows Communication Foundation (WCF) finden Sie unter Autorisierung.For more information about Windows Communication Foundation (WCF) authorization, see Authorization.

So lassen Sie Metadatenanforderungen während der Autorisierung zuTo allow metadata requests during authorization

  1. Erstellen Sie eine Erweiterung der ServiceAuthorizationManager-Klasse.Create an extension of the ServiceAuthorizationManager class.

  2. Überschreiben Sie die CheckAccessCore-Methode.Override the CheckAccessCore method. Die Methode gibt true oder false abhängig davon zurück, ob Autorisierung zugelassen wird.The method returns true or false depending on whether authorization is allowed. Informationen zur aktuellen Prozedur finden Sie im OperationContext, der zur Methode als Parameter übergeben wird.Information about the current procedure is found in the OperationContext passed as a parameter to the method.

  3. Überprüfen Sie in der Außerkraftsetzung den Vertragsnamen, Namespace und die Aktion, wie im folgenden Beispiel gezeigt.In the override, check the contract name, namespace, and the action as shown in the following example. Wenn die Bedingungen gültig sind, geben Sie true. zurückIf the conditions are valid, then return true.

  4. Verwenden Sie den Erweiterbarkeitspunkt, um die Klasse bereitzustellen.Use the extensibility point to employ the class. Weitere Informationen finden Sie unter Vorgehensweise: Erstellen eines benutzerdefinierten Autorisierungs-Managers für einen Dienst.For more information, see How to: Create a Custom Authorization Manager for a Service.

BeispielExample

Das folgende Beispiel zeigt das Außerkraftsetzen der CheckAccessCore-Methode.The following example shows an override of the CheckAccessCore method.

class MyAuthorizationManager : ServiceAuthorizationManager
{
    protected override bool CheckAccessCore(OperationContext operationContext)
    {
        // Allow MEX requests through.
        if (operationContext.EndpointDispatcher.ContractName == ServiceMetadataBehavior.MexContractName &&
            operationContext.EndpointDispatcher.ContractNamespace == "http://schemas.microsoft.com/2006/04/mex" &&
            operationContext.IncomingMessageHeaders.Action == "http://schemas.xmlsoap.org/ws/2004/09/transfer/Get")
            return true;
        // Code not shown: Perform authorization checks for non-MEX requests
        return false;
    }
}
Class MyAuthorizationManager
    Inherits ServiceAuthorizationManager
    Protected Overrides Function CheckAccessCore(ByVal operationContext As OperationContext) As Boolean

        ' Allow MEX requests through.
        With operationContext
            If .EndpointDispatcher.ContractName = ServiceMetadataBehavior.MexContractName AndAlso _
               .EndpointDispatcher.ContractNamespace = "http://schemas.microsoft.com/2006/04/mex" AndAlso _
               .IncomingMessageHeaders.Action = "http://schemas.xmlsoap.org/ws/2004/09/transfer/Get" Then
                Return True
            End If
        End With

        ' Code not shown: Perform authorization checks for non-MEX requests
        Return False

    End Function
End Class

Siehe auchSee Also

ServiceAuthorizationManager
AutorisierungAuthorization
Verwalten von Ansprüchen und Autorisierung mit dem IdentitätsmodellManaging Claims and Authorization with the Identity Model