gpt4 book ai didi

asp.net-web-api - ASP.NET Web API 和授权

转载 作者:行者123 更新时间:2023-12-01 11:50:18 26 4
gpt4 key购买 nike

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

现在我想转移到 ASP.NET Web API,我对如何为其添加安全性感到有点困惑?

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

如有任何指导,我们将不胜感激。

最佳答案

AuthorizeAttribute 仅检查 Thread.CurrentPrincipal 以查看用户是否授权访问指定资源(在本例中为 Controller 操作)。它不提供任何类型的身份验证机制。

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

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

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

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

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

Also, Dominick Baier has a nice presentation on Securing ASP.NET Web APIs and I recommend you to check that out.

关于asp.net-web-api - ASP.NET Web API 和授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11820179/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com