保护Web API Web服务,Windows身份验证

时间:2014-11-14 21:00:05

标签: angularjs asp.net-web-api

我需要保护我的Web服务到现有项目,并且不确定如何做到这一点。我试图阻止一个用户调用Web服务,在那里他们可能获得有关另一个用户的信息。

这是我的设置:.NET 4.5 - Web API Web服务,Windows身份验证,ajax(angularjs)前端。使用NHibernate和SQL服务器。我知道我写的每个Web服务都可以检查httpcontext当前用户,但我不想在每个Web服务方法中都这样做。是否有正确(更容易)的方法来做到这一点?我读了一些关于ASP.NET身份和Owin的内容,但这是我的想法,此外它只支持开箱即用的实体框架,我必须编写一些自定义提供程序或与NHibernate一起使用的东西。对不,我正在寻找替代方案,例如使用global.asax或其他东西,并启用服务器上的会话来存储和有效的用户信息。可以这样做,还是有另一种更容易的替代方案?

有什么建议吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

我假设您已经为Windows身份验证配置了Web服务器,并且该部分正在运行。

要获得授权,请查看System.Web.Mvc.AuthorizeAttributeMSDN)。开箱即用,这将使用角色/ AD安全组。如果您有自定义授权(例如,存储在您自己的数据库中),我会考虑实施IPrinciple并在Thread.CurrentPrincipal&{39} {Global.asax.cs中设置Application_PostAuthenticateRequest 1}}。您对IPrinciple.IsInRole的实施将检查您从数据库加载的权限。