Api 在.NET Core 2 web应用程序和VueJS spa之间共享登录

Api 在.NET Core 2 web应用程序和VueJS spa之间共享登录,api,authentication,single-page-application,asp.net-core-2.0,Api,Authentication,Single Page Application,Asp.net Core 2.0,也许这是一个愚蠢的问题,但我真的不知道从哪里开始 我目前有一个使用实体框架的.NETCore2MVC项目。在此MVC应用程序中,用户可以: 报名 确认他的电子邮件 登录 更改密码并添加基本配置文件信息 使用“忘记密码”重置他的密码 现在,我想构建一个VueJS SPA,用户也可以在其中使用.net core 2 webapi登录。此api的所有挂钩都已生成,并按预期工作 MVC、API和SPA部件都位于单独的子域上: www.site.com了解MVC 温泉的app.site.com ap

也许这是一个愚蠢的问题,但我真的不知道从哪里开始

我目前有一个使用实体框架的.NETCore2MVC项目。在此MVC应用程序中,用户可以:

  • 报名
  • 确认他的电子邮件
  • 登录
  • 更改密码并添加基本配置文件信息
  • 使用“忘记密码”重置他的密码
现在,我想构建一个VueJS SPA,用户也可以在其中使用.net core 2 webapi登录。此api的所有挂钩都已生成,并按预期工作

MVC、API和SPA部件都位于单独的子域上:

  • www.site.com了解MVC
  • 温泉的app.site.com
  • api的api.site.com
我的问题是:有没有办法让用户:
  • 使用MVC网站或spa/webapi登录
  • 在两个系统上共享登录信息(返回营销网站时,会出现“转到应用程序”按钮,SPA会识别经过身份验证的用户

  • 同样的行为可以在网站www.clubhouse.io上找到。这似乎正是我希望我的网站工作的方式:)

    你所追求的事实上的技术是

    您需要一个组件来充当身份提供者,它(取决于您的需求)也可能与社会身份提供者联合

    与大多数安全问题一样,滚动您自己的授权服务器是一个非常非常糟糕的主意。另外,这已经(大部分)解决了一个问题

    实际上,您有几个选择:

  • 使用第三方身份服务(Okta、auth0等)
  • 使用独立的现成授权服务器产品
  • 集成现成授权服务器库
  • 如果您已经有了一个服务器端呈现的MVC应用程序,那么#3可能是最好的方法

    现在看来.NET最好的工具是。我会朝那个方向走去,开始着手实施


    一个有用的提示:鉴于您的SPA应用程序无法保密(其源代码对客户端完全可用),唯一合适的授权授予类型是“隐式”。

    如何在MVC应用程序中对用户进行身份验证?如果使用无cookieless身份验证,则可以轻松地跨源共享令牌。我正在使用请求头中发送的JWT令牌,它应该适用于您的情况。