如何在ASP.NET MVC和ASP.NET WEB API应用程序之间共享身份验证?

5

我正在构建一个AngularJS MVC应用程序,需要在身份验证方面得到一些指导。我考虑使用MVC身份验证管道来构建身份验证。AngularJS代码将驻留在MVC应用程序中,根SPA视图将是Razor cshtml。这是我的情况 -

  • 登录页面将调用Authenticate API以返回令牌
  • AngularJS具有获取承载者并传递给每个API请求的逻辑
  • 将有多个ASP.NET WebAPI项目作为子域进行托管。
  • 我还需要调用复杂的动态剃刀模板,这将需要对返回剃刀视图的MVC控制器进行身份验证。由于MVC遵循基于cookie的身份验证,令牌会给出401状态代码。如何使MVC和WEB API应用程序之间共享身份验证?
1个回答

1
我认为你需要从API项目中获取令牌,而不是MVC,以便能够安全地调用API。
如果您想在API和MVC项目之间共享身份,则使它们使用相同的数据库。
从API获取令牌时,您可以从MVC应用程序中获取当前用户的身份详细信息。至少,这是我过去所做的。
我在这里发布了类似的博客:http://blogs.msdn.com/b/martinkearn/archive/2015/03/25/securing-and-working-securely-with-web-api.aspx然而,这并没有涵盖使用MVC登录凭据并将其传递给API以获取令牌的步骤。
希望这有所帮助。

谢谢Martin - 我不理解这部分内容 - “从API获取令牌时,您可以从您的MVC应用程序中获取当前用户的身份详细信息。至少,这是我过去的做法。”如果MVC应用程序是分开托管的,该如何获取标识?我找到了一篇看起来很有希望的文章 - http://bitoftech.net/2014/09/24/decouple-owin-authorization-server-resource-server-oauth-2-0-web-api/,唯一需要弄清楚的未知量是如何使用授权API对MVC控制器进行身份验证。 - user3448102
嗨,我其实不太确定。我想的那个项目只有一个用户可以访问API,而且凭据是硬编码的。我会调查一下,如果我找到了什么,就会回复您。 - Martin Kearn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接