这实际上取决于场景 - 如果不了解有关API的更多信息,很难说 - 但是“身份验证令牌”的使用远非普遍,你是对的,许多API不需要(也不使用)它们。许多API只需要在每次请求时发送一个API密钥(通常通过HTTPS以防止它被拦截),或者需要一个API密钥来识别用户,还需要一个带有“密钥”的数字签名来证明用户的身份(请参阅使用大多数API时,为什么它们需要两种类型的身份验证, 即密钥和秘密?).
用户名/密码不经常用于公共 API,因为它们不够灵活,并且不能在用户标识和应用程序标识之间提供足够的“分离”。例如,您注册为开发人员以使用Flickr API并创建一个使用该API的iPhone应用程序 - 您真的希望您的开发人员用户名/密码内置到应用程序中吗?如果您稍后更改密码怎么办?如果您想开发5个应用程序并分别跟踪它们的使用情况,并且能够随时关闭任何应用程序而不会影响其他应用程序,该怎么办?
但是,对于您真正只想识别人类用户而不是应用程序的情况(例如,仅为您自己的应用程序提供服务的私有API后端,而不是公共API),在大多数情况下,我看不到您的建议有什么问题,即每个请求的用户名/密码超过HTTPS。哦,顺便说一句,身份验证令牌具有“可限制”的额外优势(可以在特定时间过期,可以仅限于某些操作等),但显然这仅在非常特定的情况下有用。
另外:正如用户“Dan”在上面指出的那样,在设计一个需要在每个请求(或者实际上任何请求,即使它只是登录请求)发送用户名/密码的API时,要小心你是如何做的。如果您使用的是浏览器默认支持的技术(例如HTTP Basic Auth),那么您将阻止自己安全地向跨域用户公开API(即很可能您的API永远无法直接从浏览器安全地调用,即从AJAX / Flash / Silverlight代码)。
这是一个复杂的主题,无法在这里完全解释,但请记住,如果您的API依赖于浏览器可以记住的任何安全凭据,然后“静默地”注入每个请求(例如HTTP基本身份验证,cookie),那么使用任何跨域技术(CORS, JSONP,跨域.xml等)。