ASP.NET Core Web API和MVC项目分开时使用ASP.NET标识。哪个应该处理身份验证?

时间:2017-06-08 21:14:55

标签: asp.net asp.net-web-api asp.net-core asp.net-core-mvc asp.net-identity

如果我要创建两个单独的项目:

  1. ASP.NET核心Web API项目
  2. ASP.NET核心MVC项目
  3. MVC项目将使用HttpClient与Web API进行通信。

    如果是这种情况,并且我想使用内置的ASP.NET身份,我应该通过Web API进行操作还是将其作为MVC项目的一部分进行操作?

1 个答案:

答案 0 :(得分:1)

根据您的问题描述,您似乎最终只会保护您应用的1层。

理想情况下,你会保护两者。在MVC应用程序方面,您可能希望使用ASPNET标识user authentication(确定谁想要获取信息),并且在WebAPI方面,您希望resource authenticationclient authentication检查是否API(app x)的调用者实际上有权调用API。后者无法通过ASPNET身份完成。您可能需要像Identity Server 4或Azure B2C这样的产品来实现这一目标。

现在,您可以保持API开放和放大内部,只是从MVC APP中的HTTPClient调用它,但是,如果我是你,我不会这样做。我可以想到为什么你想要一个API的唯一原因是,以后你可以从其他应用程序中使用它,所以,保持API打开是不可取的。

如果我愿意,我希望在我的应用程序周围建立一个安全框架,然后继续为应用程序提供API所需的访问权限,以执行所需的操作。