如何使用ASP.net Identity和第三方REST服务进行身份验证



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

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

我想如果可能的话,继续使用ASP.net Identity AspNetRoles表来管理用户的角色,一旦他/她登录。

实现这个场景的最佳方法是什么?我最初考虑编写自定义UserStore,但这假设我可以访问密码散列,但我没有。我只能登录和使用第三方API端点更新密码,我不能直接访问数据库用户表

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

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

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

相关内容

  • 没有找到相关文章

最新更新