首页 > 解决方案 > Asp.net core 3.1 保护 API 和 Web 应用程序

问题描述

我有一个包含 2 个项目的 ASP.net 核心解决方案,我想为这两个项目添加身份验证:

在此处输入图像描述

WebAuth 项目包含基本身份验证(登录、注册...),但我可以在未经身份验证的情况下调用 ApiAuth 项目 APIs。如何保护 ApiAuth 项目 API?我尝试添加 [Authorize] 装饰器,但出现此错误:

在此处输入图像描述

所以我正在考虑添加 JWT 身份验证,但我不知道这样做是否正确?请问有什么建议吗?

标签: c#asp.net-coreauthenticationasp.net-web-apijwt

解决方案


如果 API 请求来自使用 cookie 提供服务的 Web 应用程序,并且如果 Web 和 API 共享相同的域,则可以为两者使用相同的 cookie。这比 JWT 更可取,因为它还具有使用不受恶意 JavaScript 影响的安全、仅限 HTTP 的 cookie 的优势。

在 API 上,您将添加cookie 身份验证

services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
    .AddCookie();

来自 Web 应用程序的请求应该带有 cookie,只要它们使用相同的域,例如myapp.com/appmyapp.com/api.

这还要求两个应用程序具有相同的数据保护配置,因此它们都能够使用共享密钥读取加密的 cookie。


推荐阅读