Web API 安全(身份验证)

Web API Security ( Authentication )

背景:

我已经实现了 Web-API (.NET),现在我需要做最重要的事情, 保护它。

当我调查这个主题时,我了解到常见的方式是 Bearer Token。

现在我们来解决我的问题。

我的问题

一侧:

我看到的每篇文章(解释概念和通过 .NET 实现它的方法)都是从一个带有 Web API 模板的项目开始的,该模板包含 MVC 和 Web API 并且在身份验证字段从个人/组织/Windows中选择一个选项。

另一边:

我不需要 MVC 项目,我只需要 Web API(没有任何 GUI),我选择空项目并选中 Web API 复选框的原因就是这样我无法选择身份验证类型,我被迫从无身份验证开始。

问题:

1.Do我一定要用MVC来获取认证?如果不是,我如何从纯 Web API 项目做到这一点?

2.Maybe 我将从该 Web API 模板(可以选择身份验证类型)创建身份验证服务器(仅生成令牌)? (并在真实 Web 上使用令牌 API)

3.There 在不同的项目和不同的服务器上实施身份验证服务器有什么好处吗? (Kerberos style )

P.S 我想使用开箱即用的解决方案,因为安全方面是最重要的(在我看来)并且应该是完美无缺的。

我写了一篇关于这个主题的博客,名为 'Securing and securely calling Web API and [Authorize]':http://blogs.msdn.com/b/martinkearn/archive/2015/03/25/securing-and-working-securely-with-web-api.aspx。我想如果你读了这篇文章,你就会得到所有的答案。

Web API 模板默认包含 MVC,因此您可以获得自动文档功能(这是一个很棒的功能)。然而,身份验证部分与核心 ASP.net 功能相关,而不特定于 MVC 或 Web API。您需要启用身份验证选项之一以使用 .net 的内置安全功能保护您的 API。

如果你不想要Web自带的MVC项目API,创建项目后删除即可。它包含在 'areas' 文件夹中。如果您删除该文件夹,您将 运行 在纯网络上 api。

回答您的具体问题:

1) 不,您不需要 MVC 项目来保护 API 项目。您可以在 API 控制器和操作上使用 [Authorize] 属性。

2) 默认情况下使用 Web api 模板创建身份验证服务器。您可以通过 http:///Token

访问它并获取令牌

3) 不,您需要使用 api 本身来为安全的 controller/action 请求提供有效令牌

希望对您有所帮助。如果不是,那么请更具体地回答您的问题。