【问题标题】:How to Setup Authentication for Web API?如何为 Web API 设置身份验证?
【发布时间】:2015-09-16 14:44:43
【问题描述】:

我有一个我写的 asp.net 应用程序,它有很多 Web API 控制器。

目前,当用户登录我的应用程序时,它使用会话,并且用户帐户通过我自己的存储用户名和密码(哈希)等的 SQL 表进行身份验证...

如果用户知道或查看 js 源/或提琴手,他们可以看到 Web API 调用并获取他们可能在应用程序外部调用的控制器的 URL。

我想以某种方式保护它,这样它就不允许他们在应用程序之外访问它,或者更好地检查用户是否被允许执行请求。

最好的方法是什么?

谢谢

【问题讨论】:

  • “它使用会话”是什么意思?你在做某种手工认证吗?

标签: c# asp.net asp.net-web-api


【解决方案1】:

您可以使用AuthorizeAttribute 来实现您所追求的目标。

来自MSDN

指定对控制器或操作方法的访问仅限于满足授权要求的用户。

以下示例显示了一个简化的帐户控制器,它限制或允许访问操作方法。 AuthorizeAttribute 属性应用于控制器,因此必须授权用户访问任何操作方法;但是,AllowAnonymousAttribute 属性应用于 Register 方法以覆盖对用户进行授权的要求。 Manage 和 LogOff 方法仅限于授权用户。

[Authorize] 
public class AccountController : Controller
{
public AccountController () { . . . }

[AllowAnonymous]
public ActionResult Register() { . . . }

public ActionResult Manage() { . . . }

public ActionResult LogOff() { . . . }
. . .
} 

【讨论】:

    【解决方案2】:

    我想以某种方式保护它,因此它不允许他们 在应用程序之外访问它。

    根据我对问题的理解,您不希望其他应用程序访问您的 API,但您的 API 除外。

    默认情况下,如果客户端应用程序和 Web API 在同一个域中,除非您明确启用 CORS,否则它已经受到保护。

    更好地检查用户是否被允许执行请求

    AuthorizeAttribute 应该负责身份验证和授权,除非您自己手动滚动安全性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-13
      • 2017-10-22
      • 2014-01-28
      • 2012-06-16
      • 2016-07-03
      • 1970-01-01
      • 2015-07-03
      • 1970-01-01
      相关资源
      最近更新 更多