为Web API选择最佳身份验证和授权选项

时间:2017-01-03 06:26:18

标签: asp.net-web-api oauth-2.0 asp.net-web-api2 owin jwt

我们在ASP.NET MVC中拥有自己的现有门户网站,现在我们的客户之一不希望将我们的门户网站用作单独的工具,而是希望通过WEB API使用我们的功能并将其用于自己的方面。

现在我想在网络API中实施身份验证和授权,我确实谷歌找到了我的问题的答案,但没有得到它。

我对以下几点感到困惑。

  1. 向OWIN提供Microsoft提供的默认实现是否是最佳选择?或一些自定义实现?

  2. 在安全性方面使用OWIN有什么优势和劣势?

  3. 何时使用JWT(Json Web令牌)和OWIN?

  4. 或其他任何有助于创建更安全的Web API的实现?

  5. 寻找所有专家的宝贵意见,以帮助我做出决定。

1 个答案:

答案 0 :(得分:1)

我实施了类似的东西。这就是我们的工作方式:我们的应用程序(MVC应用程序)允许我们登录。登录使用单独的mvc项目(我们的STS)来处理所有用户身份验证。正确发布我们的登录名和密码后,我们会生成一个返回给MVC应用程序的JWT。回到应用程序端,我们解码我们的令牌并在asp.net应用程序cookie中构建声明。 我们还有一个包含WebApi REST方法的独立项目。这些只能通过使用我们的STS生成的JWT来调用。我们使用自定义属性详细说明了这一点,以便我们可以对令牌中的特定权限或角色声明设置权限。

为了创造所有这些,我非常了解这些系列文章:http://bitoftech.net/2014/10/27/json-web-token-asp-net-web-api-2-jwt-owin-authorization-server/

在架构方面,这是我认为的应该如何'但我不是这方面的专家。

总结:

  • Web应用程序 - 用于验证/授权的应用程序cookie

  • 调用WebApi Rest方法 - 使用JWT进行身份验证/授权

  • 单独使用POSTS进行身份验证并生成JWT的STS