目标:几年前,我已经建立了一个现有的ASP.NET MVC网站,我想与我正在构建的新ReactNative应用共享身份管理。
我希望用户能够登录Web和应用程序,并且可以通过在两个用户上交替使用同一用户来实现无缝集成。它还应支持使用现成的Oauth2 OWIN登录名来支持ASP.NET MVC网站当前支持的Facebook和Google+登录。
为了降低成本,我想尽可能多地/全部使用Azure Function在ReactNative应用程序上使用的调用。
问题
我对它的工作方式有些困惑,因为它与ASP.NET MVC项目紧密相关,并且所有部分(登录,注册,更改密码,忘记密码等)都使用内置的使用SignInManager等的ASP.NET身份验证方法。
计划
我的计划是执行以下操作,但是特别感谢任何可以给我提出任何想法的人。
我的计划如下:
对所有内容使用Azure函数,例如登录,注册等,这使其可伸缩且非常便宜,并且不需要在某处设置其他服务器
添加一个使用用户名和密码的登录azure函数,该函数对提供的密码进行哈希处理,并针对相应的用户名对数据库进行检查,如果密码匹配,则提供一个JWT,它将允许将其作为承载令牌传递给已验证请求的任何进一步调用。
添加一个注册天蓝色函数,它将接收通常的详细信息,用户名,电子邮件等。该函数将检查数据库以查看用户是否已经存在,如果存在则抛出异常,否则将手动将记录添加到asp_users
表中,然后向JWT发送带有将来进行任何已认证请求所需的令牌的JWT。
关于Facebook和Google+身份验证,我计划使用他们的JavaScript SDK进行身份验证,然后将提供给azure函数的访问代码发送出去。然后可以将其用于查询Facebook / Google API以获取电子邮件地址,如果电子邮件地址存在,则将其详细信息以JTW令牌的形式提供,如果没有创建用户,然后将其发送回。我不知道这是否适用于MVC设置,但是如果用户随后尝试使用Web登录呢?
所有JTW令牌都将保留用户的用户名,以便在令牌有效期间可以针对该用户审核/记录所采取的任何操作,否则它们将注销并需要再次登录。
非常感谢,我已经为此花了将近2个月的时间,但还没有真正尝试进行编码。我的目标是在Spring之前完成我的应用程序,但需要找出这一关键部分,然后再进行下一步。
非常感谢。