首页 文章

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

提问于
浏览
2

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

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

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

实施此方案的最佳方法是什么?我最初考虑编写一个自定义 UserStore ,但这假设我可以访问密码哈希,我不能直接访问数据库用户表 .

1 回答

  • 4

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

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

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

相关问题