所以我有一个现有的Windows Phone 7应用程序,它使用我自己的授权(播放器使用别名和密码登录,并根据数据库验证它)转到MVC Web服务.
现在我想转向ASP.NET Web API,我对如何为它添加安全性感到困惑?
我看到有AuthorizeAttribute,但我需要做些什么才能让他们获得授权?
这里的任何指导将不胜感激.
AuthorizeAttribute只是检查Thread.CurrentPrincipal以查看用户是否有权访问指定的资源(在这种情况下,它是控制器操作).它不提供任何类型的身份验证机制.
在您的情况下,由于您具有用户名和密码,您可以进行基本身份验证.最好的地方是在Message Handler中.这是一个例子:BasicAuthenticationHandler
我不鼓励你使用它,因为这个实现背后没有测试,但这应该给你一个想法.该类是一个抽象类,当您将其设置为消息处理程序的基类时,您需要覆盖该AuthenticateUser方法并返回IPrincipal.如果返回值为null,则表示用户未经过身份验证.如果您提供IPrincipal,IPrincipal将设置,您AuthorizeAttribute可以检查它.
例如,您可以使用GenericPrincipal类来创建IPrincipal.假设您在ASP.NET主机上,您可以注册您的身份验证处理程序,如下所示:
GlobalConfiguration.Configuration.MessageHandlers.Add(new MyAuthHandler());
Run Code Online (Sandbox Code Playgroud)
总而言之,无论您使用何种类型的身份验证(Basic Auth,OAuth等),都要以某种方式通过消息处理程序进行身份验证.然后,通过授权AuthorizeAttribute.
此外,Dominick Baier有关于保护ASP.NET Web API的精彩演示,我建议您检查一下.
| 归档时间: |
|
| 查看次数: |
1329 次 |
| 最近记录: |