Web API安全性(身份验证)

时间:2015-04-14 22:43:50

标签: asp.net-mvc authentication asp.net-web-api bearer-token

背景:

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

在调查此主题时,我了解常见的方法是不记名令牌。

现在我们遇到了问题。

我的问题

一方面:

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

另一方面:

我不需要MVC项目,我只需要Web API(没有任何GUI)我选择空项目的原因并检查Web API复选框,这样我就无法选择身份验证类型,I被迫在没有认证的情况下开始。

问题:

1.我是否必须使用MVC进行身份验证?如果没有,我怎么能从纯Web API项目中做到这一点?

2.也许我会从该Web API模板创建一个认证服务器(只生成令牌)(可以选择认证类型)? (并使用真实Web API上的令牌)

3.在不同的项目和不同的服务器上实现Authentication Server有什么好处? (Kerberos style

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

1 个答案:

答案 0 :(得分:0)

我写了一篇关于这个主题的博客,名为“保护并安全地调用Web API和[授权]”: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 API附带的MVC项目,只需在创建项目后删除它。它包含在'areas'文件夹中。如果删除该文件夹,则将在纯web api上运行。

回答您的具体问题:

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

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

访问它并获取令牌

3)不,您需要使用api本身为安全控制器/操作请求提供有效令牌

希望有所帮助。如果没有,那么请更具体地解答您的问题。