为VueJS SPA和asp.net内核3.1实现OAuth2/OIDC


  • 作为API后端的SPAasp.net core 3.1的Vue前端
  • 使用Microsoft.AspNetCore.SpaServices.Extensionsnuget包,因此,当用户访问.net核心时,SPA文件将从文件夹(wwwroot/dist(中提供
  • 后端API控制器带有[Authorize]属性
  • SPA路由器具有authguard,因此受保护的路由仅对经过身份验证的用户可用
  • SPA将使用Axios并将承载令牌传递给后端API

我想使用托管在另一个系统上的identityserver4,用pkce实现OAuth2/Oidc授权代码。

登录页的请求应将用户转发到identityserver4进行登录/密码提示,并在使用令牌完成所有步骤后重定向回。

理想情况下,我希望.net核心处理所有oauth/oidc步骤,而不想在SPA中使用oidc-clientjavascript客户端来处理它。关于我该如何做到这一点,有什么建议吗?感谢

这里有两个标准模型,您需要根据您最关心的因素选择其中一个:

选项1:SPA场景

  • SPA是OAuth客户端,通过Javascript技术进行身份验证
  • API是OAuth资源服务器

资源服务器处理客户端的身份验证流不是标准的,而是客户端应该进行身份验证,然后调用资源服务器。

选项2:WEB后端场景

当人们想将令牌排除在浏览器的Javascript代码之外时,通常会选择此选项:

  • C#中的Web后端是OAuth客户端
  • Web后端需要安全地与浏览器通信,并且必须为此使用身份验证cookie
  • 要调用API,浏览器需要将cookie发送到web后端以获取令牌,或者通过web后端对所有API调用进行双跳

关于OIDC客户端

就我个人而言,我更喜欢选项1,我认为它更接近SPA的总体目标,例如跨域托管和使用内容交付网络。OIDC客户端实际上可以实现一个相当简单的SPA安全性实现,如我的客户端实施。

最新更新