在.NET Core 2 Web应用程序和VueJS spa

时间:2018-01-08 18:51:53

标签: api authentication single-page-application asp.net-core-2.0

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

我目前有一个使用Entity Framework的.NET Core 2 MVC项目。在这个MVC应用程序中,用户可以:

  • 注册
  • 确认他的电子邮件
  • 登录
  • 更改密码并添加基本个人资料信息
  • 使用“忘记密码”重置密码

现在我想构建一个VueJS SPA,用户也可以使用.net core 2 webapi登录。这个api的所有钩子都已构建并正在按预期工作。

MVC,API和SPA部分都将存在于一个单独的子域中:

  • www.site.com for MVC
  • app.site.com for SPA
  • api.site.com for API

我的问题:有没有办法让用户:

  1. 使用MVC网站 spa / webapi
  2. 登录
  3. 在两个系统上共享登录信息(返回营销网站时,会出现“转到应用程序”按钮,SPA会识别经过身份验证的用户
  4. 同样的行为可以在www.clubhouse.io网站上找到。这似乎正是我希望我的网站工作的方式:)

1 个答案:

答案 0 :(得分:0)

你所追求的事实上的事实是OAuth 2.0

您需要一个组件作为身份提供者,(根据您的要求)也可以与社交身份提供者联合。

与大多数安全性一样,滚动自己的授权服务器实际上是真的坏主意。此外,它已经(大部分)已经解决了问题。

实际上你有几个选择:

  1. 使用第三方身份服务(Okta,auth0等)
  2. 使用独立的现成授权服务器产品
  3. 集成现成的授权服务器库
  4. 鉴于您已经拥有服务器端呈现的MVC应用程序,#3可能是最好的方法。

    现在看起来.NET的最佳工具是IdentityServer.io。我会以这种方式前进并开始实施。

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