【问题标题】:Asp.net core 3.1 securing API and web appAsp.net core 3.1 保护 API 和 Web 应用程序
【发布时间】:2021-06-28 15:20:47
【问题描述】:

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

  • 我希望网络应用使用基于 cookie 的身份验证,因为它很容易添加。
  • 但是当我从 ApiAuth 项目调用 API 时,我希望通过身份验证才能使用它。

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

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

【问题讨论】:

  • 我们无法猜测您的代码在其中写了什么。您是否按照错误描述的方式添加了身份验证?

标签: c# asp.net-core authentication asp.net-web-api jwt


【解决方案1】:

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

在 API 上,您将添加 cookie authentication:

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

来自网络应用的请求应该带有 cookie,只要它们使用相同的域,例如 myapp.com/app 和 myapp.com/api。

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

【讨论】:

    猜你喜欢
    • 2021-08-04
    • 2021-05-17
    • 2018-11-30
    • 2021-08-22
    • 2022-10-25
    • 2020-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多