Wie würden Sie den API-Schlüssel in WCF Data Service implementieren?

Gibt es eine Möglichkeit, einen API-Schlüssel in der URL oder eine andere Möglichkeit zum Übergeben eines privaten Schlüssels an den Dienst zu fordern, um Zugriff auf die Daten zu gewähren?

Ich habe das gerade ...

using System;
using System.Data.Services;
using System.Data.Services.Common;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel.Web;
using Numina.Framework;
using System.Web;
using System.Configuration;

[System.ServiceModel.ServiceBehavior(IncludeExceptionDetailInFaults = true)]
public class odata : DataService {


    public static void InitializeService(DataServiceConfiguration config) {

        config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);
        //config.SetServiceOperationAccessRule("*", ServiceOperationRights.All);
        config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
    }

    protected override void OnStartProcessingRequest(ProcessRequestArgs args) {

        HttpRequest Request = HttpContext.Current.Request;
        if(Request["apikey"] != ConfigurationManager.AppSettings["ApiKey"])
            throw new DataServiceException("ApiKey needed");

        base.OnStartProcessingRequest(args);
    }
} 

... Dies funktioniert, ist jedoch nicht perfekt, da Sie nicht auf die Metadaten zugreifen und den Dienst über den Explorer "Dienstreferenz hinzufügen" ermitteln können. Ich könnte überprüfen, ob $ Metadaten in der URL sind, aber es scheint wie ein Hack. Gibt es einen besseren Weg?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage