【问题标题】:ASP.NET Core MVC/WebAPI Authentication Schemes plus AnonymousASP.NET Core MVC/WebAPI 身份验证方案加匿名
【发布时间】:2019-11-21 20:49:06
【问题描述】:

我在编写网站和 API 时遇到问题。如果重要的话,它们在同一个项目中。

简化为最简单的形式,它是一个目录网站和 API。您在数据库中有产品和显示产品信息的页面。您还有其他页面允许编辑此信息和添加新产品等。

您可以通过三种方式做到这一点:

  1. 匿名用户可以在网站上列出产品并查看有关它们的公开信息。
  2. 登录用户可以在网站上列出、查看(包括私人信息)、编辑、创建和删除产品。
  3. 拥有有效 API 密钥的用户可以使用 API 列出、查看(包括私人信息)、编辑、创建和删除产品。

我遇到的问题是该网站对 API 使用 AJAX 调用,并且这些仅在网站用户经过身份验证时才有效。在没有身份验证 cookie 或 API 密钥的情况下调用 API 会因设计而失败。

以安全的方式向后端 API 识别未经身份验证的网站以使其能够工作的推荐方法是什么?

我的想法包括:

  • 网站的特殊 API 密钥,但它必须在 Javascript 代码中的某个地方对整个世界都是可见的,因此有人可以使用它来自己访问 API 并绕过我想要的任何速率限制实施。

  • 我考虑在 Web 控制器的会话中设置一些内容,然后可以在 API 控制器中进行验证,但我遇到了对 API 的未经身份验证的调用重定向到帐户控制器上的登录页面的问题,然后设置相关的会话变量,这意味着无论是否经过合法身份验证,后续 API 调用都会成功。这似乎是最有前途的选择,但我对 ASP.NET Core 的工作原理还不够熟悉,无法使其健壮。

【问题讨论】:

    标签: c# asp.net asp.net-mvc


    【解决方案1】:

    您应该使用 Jason Web 令牌身份验证,要在您的 API 中实现一个,请查看以下链接:

    https://medium.com/@adegokesimi/implementing-jwt-and-refresh-token-in-net-core-2-2-web-api-b21ef6de2a19

    通过在 WebApi 的管道中使用 JWT 身份验证,您的问题将得到解决。

    此外,您可以将 ASP.NET Core 身份系统用于可以在特定控制器方法上实现的角色之类的事情,例如,“EDIT”只能允许角色管理员等。

    亲切的问候, .js

    【讨论】:

      猜你喜欢
      • 2022-01-04
      • 2018-02-23
      • 2018-09-02
      • 2018-05-30
      • 2014-03-20
      • 1970-01-01
      • 1970-01-01
      • 2019-05-25
      • 2019-08-31
      相关资源
      最近更新 更多