自托管WCF-Rest服务上的身份验证

时间:2014-09-20 16:25:24

标签: .net wcf rest authentication nancy

我正在创建一个具有Web界面的.Net(C#)应用程序,该界面可以从用户的本地网络访问。当然,用户也可以选择从外部(互联网)访问网络界面。

Web界面是SPA(单页应用程序)。网站有一个Rest接口和一个WCF接口,因此其他软件可以轻松地与我的应用程序进行交互。两者都是自我托管的。

网站本身(HTML页面)是Nancy自我托管的。

WCF和Rest的操作合同如下所示:

    [OperationContract]
    [WebGet(BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]
    public string GetStuff()
    {
        return "Stuff";
    }

WCF / Rest-service启动如下:

// Create the ServiceHost.
apiHost = new ServiceHost(typeof(ServiceClass), Address);

apiHost.Description.Behaviors.Add(smb);
ServiceEndpoint restEndpoint = new ServiceEndpoint(ContractDescription.GetContract(typeof(ServiceClass)), new WebHttpBinding(), new EndpointAddress(RestAddress));
restEndpoint.EndpointBehaviors.Add(new WebHttpBehavior());

apiHost.AddServiceEndpoint(restEndpoint);

现在我想添加一个登录网站和Rest-service(稍后将添加登录到WCF服务)。但每当我尝试在互联网上解释的方法时,某些东西就不起作用了。例如,我尝试this,但后来我无法访问HttpContext.Current.User.Identity,因为当前的HttpContext为空。

任何人都可以解释我如何为我的实现添加身份验证,或者至少指出我正确的方向? ServiceContract中有很多方法,所以我不希望在每种方法中都做一些手动检查。但是如果没有其他方法,我可以使用PostSharp来为每个方法添加一些身份验证代码。

感谢您的帮助!

0 个答案:

没有答案