ASP.NET Web API和授权

3

我有一个现有的 Windows Phone 7 应用程序,使用我的自有授权(玩家通过别名和密码登录,并针对数据库进行验证)连接到 MVC Web 服务。

现在我想转移到 ASP.NET Web API,但是我有些困惑如何为它添加安全性?

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

希望你能提供任何指导。

2个回答

5
AuthorizeAttribute只检查Thread.CurrentPrincipal来确定用户是否有权限访问指定的资源(在这种情况下是控制器操作),它不提供任何类型的身份验证机制。
在您的情况下,由于已经有用户名和密码,您可以进行基本身份验证。最好在消息处理程序内执行此操作。以下是一个示例: BasicAuthenticationHandler 我不鼓励您使用这个示例,因为这个实现没有测试,但这应该给您一个思路。该类是一个抽象类,当您将其设置为消息处理程序的基类时,您需要重写AuthenticateUser方法并返回IPrincipal。如果返回值为null,则表示用户未经过身份验证。如果您提供了IPrincipal,那么该IPrincipal将被设置,并且您的AuthorizeAttribute可以对其进行检查。
例如,您可以使用GenericPrincipal类创建IPrincipal。假设您正在使用ASP.NET主机,可以按如下方式注册您的身份验证处理程序:
GlobalConfiguration.Configuration.MessageHandlers.Add(new MyAuthHandler());

总的来说,通过消息处理程序进行身份验证,无论您使用何种类型的身份验证(Basic Auth,OAuth等)。然后,通过AuthorizeAttribute进行授权。
此外,Dominick Baier在 Securing ASP.NET Web APIs 方面做了很好的演示,我建议您去查看一下。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接