- 作为API后端的
SPA
和asp.net core 3.1
的Vue前端 - 使用
Microsoft.AspNetCore.SpaServices.Extensions
nuget包,因此,当用户访问.net核心时,SPA文件将从文件夹(wwwroot/dist(中提供 - 后端API控制器带有
[Authorize]
属性 - SPA路由器具有authguard,因此受保护的路由仅对经过身份验证的用户可用
- SPA将使用
Axios
并将承载令牌传递给后端API
我想使用托管在另一个系统上的identityserver4
,用pkce实现OAuth2
/Oidc
授权代码。
登录页的请求应将用户转发到identityserver4进行登录/密码提示,并在使用令牌完成所有步骤后重定向回。
理想情况下,我希望.net核心处理所有oauth/oidc步骤,而不想在SPA中使用oidc-client
javascript客户端来处理它。关于我该如何做到这一点,有什么建议吗?感谢
这里有两个标准模型,您需要根据您最关心的因素选择其中一个:
选项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安全性实现,如我的客户端实施。