REST API 身份验证有啥不同? [关闭]

Posted

技术标签:

【中文标题】REST API 身份验证有啥不同? [关闭]【英文标题】:What is so different about REST API authentication? [closed]REST API 身份验证有什么不同? [关闭] 【发布时间】:2021-12-24 05:29:59 【问题描述】:

当我使用 MVC 或 Razor Pages 创建网站时,Visual Studio 为我提供了对用户帐户使用内置支持的选项。限制对页面的访问就像向控制器/Razor 页面添加属性一样简单。

但现在我开始着手编写 Web API,它似乎大不相同。我已经阅读了几篇关于向我的 API 添加身份验证的文章,它们都采用了不同的方法。而且这些方法都不像常规网站那样简单。

我的问题是:保护 Web API 需要对 API 进行如此不同的处理,有什么原因吗?有没有像普通网站一样简单的解决方案?

我不需要太复杂的东西。我想确保所有用户都经过身份验证。并限制部分用户访问。

【问题讨论】:

【参考方案1】:

不管怎样,这是我对此事的看法。

一个主要区别是网站是由用户访问的。如果该用户未通过身份验证并尝试访问页面,则将他们引导至登录。

API 通常由某个进程在后台访问。在这种情况下,如果需要身份验证,则不能要求用户再次登录,因为这会中断用户旅程。相反,您需要确定该用户是否具有访问 API 的权限。这就是 OAuth2 和各种身份验证流程的用武之地

用户一次登录到应用程序,请求访问或不记名令牌。这决定了它也允许访问的事物(范围)。

如果您同时控制 Web 应用程序和 API,那么是的,您可以做一些非常基本的事情来使其变得非常简单(比如传递一个简单的预配置令牌并检查它)。

当 API 不知道调用应用程序时,复杂性就会出现。在这种情况下,您需要允许通过各种不同的身份验证流程进行通信。做到这一点的最佳方法是采用最佳实践方法,这些方法在外观上比简单的 Web 应用身份验证要复杂得多。

【讨论】:

以上是关于REST API 身份验证有啥不同? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Chargify REST API 上进行身份验证

Spring boot 如何让 Thymeleaf 网页和 REST API 具有不同的身份验证方案

面向客户端的 REST API 身份验证

自定义 REST 服务的 API 身份验证最佳实践

REST API 和移动应用的身份验证策略

用于身份验证的 REST API URL 的最佳实践