3

所以我有一个现有的 Windows Phone 7 应用程序,它使用我自己的授权(玩家使用别名和密码登录,并根据数据库验证它)去 MVC Web 服务。

现在我希望转向 ASP.NET Web API,但我有点困惑如何为其添加安全性?

我看到有AuthorizeAttribute,但我需要做什么才能让他们获得授权?

这里的任何指导将不胜感激。

4

2 回答 2

5

AuthorizeAttribute只是检查Thread.CurrentPrincipal用户是否有权访问指定的资源(在这种情况下是控制器操作)。它不提供任何类型的身份验证机制。

在您的情况下,由于您有用户名和密码,您可以进行基本身份验证。执行此操作的最佳位置是在消息处理程序中。这是一个示例:BasicAuthenticationHandler

我不鼓励您按原样使用它,因为此实现背后没有测试,但这应该给您一个想法。该类是一个抽象类,当您将其设置为消息处理程序的基类时,您需要覆盖该AuthenticateUser方法并返回IPrincipal。如果返回值为 null,则表示用户未通过身份验证。如果您提供一个IPrincipalIPrincipal它将被设置并且您AuthorizeAttribute可以检查它。

例如,您可以使用GenericPrincipal类创建一个IPrincipal. 假设您在 ASP.NET 主机上,您可以注册您的身份验证处理程序,如下所示:

GlobalConfiguration.Configuration.MessageHandlers.Add(new MyAuthHandler());

总而言之,无论您使用什么类型的身份验证(基本身份验证、OAuth 等),都以某种方式通过消息处理程序进行身份验证。然后,通过 进行授权AuthorizeAttribute

此外,Dominick Baier 有一个关于保护 ASP.NET Web API的精彩演示,我建议您检查一下。

于 2012-08-06T05:10:45.270 回答
0

maybe this will help you: Custom AuthorizeAttribute for Web API controllers

于 2014-04-19T14:47:06.063 回答