通过WEB API使用ASP.NET Identity进行本地登录

时间:2015-06-29 12:41:21

标签: asp.net asp.net-mvc asp.net-web-api oauth-2.0 asp.net-identity

我想将ASP.NET身份用于在前端使用MVC5设置的项目,并使用物理上分离的业务逻辑服务器。 BL服务器是唯一可以直接访问数据库服务器的服务器。

为了解决这个问题,我想我可以采取以下两种方式之一:

  1. 使用前端的ASP.NET Identity,但使用自定义IUser * Store来调用Web API而不是直接访问数据库。 Web API将在BL服务器上运行并实现数据访问(EF)。
  2. 通过WEB API使用BL中的ASP.NET身份,但让它提供DTO(实际上,只是传递给视图的模型)。 MVC层将使用来自ViewModel的数据调用Web API,然后Web API将返回将传递给Views的模型(MVC层实际上只是成为传递)。我可以使用与ViewModel略有不同的DTO,然后让MVC层创建ViewModel,但它不会改变整体点。
  3. 我想也许第一个选项更干净,但我如何在后端Web API上使用声明授权?我希望能够传递某种令牌吗?谁生成它,以及如何让Web API与它一起工作(即从头部拉出access_token并创建一个ClaimsPrincipal)?

    我对第二个选项的关注是它没有直接登录呼叫,它只有令牌支持,所以我不知道我是否仍然可以以相同的方式管理用户的登录状态或如果我应该这样做(我需要完全访问常规用户管理的东西,如更改密码,双因素,锁定帐户等)。

    对于正确采取措施的任何指导都将不胜感激。

1 个答案:

答案 0 :(得分:1)

我最终使用选项1.我从IUser * Store实现进行Web API调用。

我通过使用IdentityServer发出access_token解决了ClaimsPrincipal问题。 Web API很容易使用这些令牌并为我构建我的ClaimsPrincipal,然后我可以使用我想要的声明。就我而言,我使用AuthorizationManager进行集中访问检查。

我希望这有帮助!