如何将ASP.net Identity与第三方REST服务一起用于身份验证?

时间:2016-08-31 15:19:57

标签: asp.net asp.net-mvc entity-framework authentication asp.net-identity

我有一个现有的组合ASP.net MVC和WebAPI网站,它使用标准UserManager类来使用实体框架执行身份验证。我现在需要换掉'该身份验证并使用外部第三方REST Web服务进行身份验证并存储和更新用户详细信息。

第三方Web服务有一个简单的login端点,它接受用户名和密码,如果登录成功,它会返回一个令牌。

我希望尽可能继续使用ASP.net Identity AspNetRoles表来管理用户登录后的角色。

实施此方案的最佳方法是什么?我最初考虑编写一个自定义UserStore,但这假设我可以访问密码哈希,我不会这样做。我只能使用第三方API端点登录并更新密码,我无法直接访问数据库用户表。

1 个答案:

答案 0 :(得分:4)

为了回答我自己的问题,最后我在ApplicationUserManager课程中处理了这个问题。我重写了FindAsync方法并通过调用第三方Web服务验证了那里的凭据。这返回了一个会话令牌,用于调用其他端点。

我将会话令牌存储在用户ClaimIdentity中的另一个覆盖方法 - CreateIdentityAsync中。然后,可以在后续WebAPI调用中从承载令牌中读取此会话令牌。

此技术适用于WebAPI和网站登录,如果用户没有存储在第三方服务中的凭据,可以根据需要回退到UserManager以使用EF验证用户的凭据。

相关问题