我有一个现有的ASP.net MVC和WebAPI组合网站,它使用标准 UserManager
类来使用Entity Framework执行身份验证 . 我现在需要'swap out'认证并使用外部第三方REST Web服务进行身份验证并存储和更新用户详细信息 .
第三方Web服务有一个简单的 login
endpoints ,它接受用户名和密码,如果登录成功,它会返回一个令牌 .
我想尽可能继续使用ASP.net Identity AspNetRoles
表来管理用户登录后的角色 .
实施此方案的最佳方法是什么?我最初考虑编写一个自定义 UserStore
,但这假设我可以访问密码哈希,我不能直接访问数据库用户表 .
1 回答
为了回答我自己的问题,最后我在
ApplicationUserManager
课程中处理了这个问题 . 我重写了FindAsync
方法并通过调用第三方Web服务验证了那里的凭据 . 它返回了一个用于调用其他 endpoints 的会话令牌 .我将会话令牌存储在另一个覆盖方法_2967378中的用户
ClaimIdentity
中 . 然后,可以在后续WebAPI调用中从承载令牌中读取此会话令牌 .此技术适用于WebAPI和网站登录,如果用户没有存储在第三方服务中的凭据,则可以根据需要回退到UserManager以使用EF验证用户的凭据 .