2014-11-14 92 views
2

我需要将我的Web服务保护到现有项目,但不知道如何执行此操作。我试图阻止一个用户调用一个Web服务,他们可能会获得关于另一个用户的信息。保护Web API Web服务,Windows身份验证

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

有什么建议吗?

谢谢!

回答

1

我假设您已经将您的Web服务器配置为Windows身份验证,并且该部分正在工作。

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

+0

谢谢!很有帮助 – Rob 2014-11-17 17:07:30