我已经实现了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 我想使用开箱即用的解决方案,因为安全方面是最重要的(我认为)并且应该是完美的。
答案 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本身为安全控制器/操作请求提供有效令牌
希望有所帮助。如果没有,那么请更具体地解答您的问题。