为同一 API 混合多个身份验证模型是最佳实践吗? [关闭]

Posted

技术标签:

【中文标题】为同一 API 混合多个身份验证模型是最佳实践吗? [关闭]【英文标题】:Mixing multiple authentication model for same API is a best practice? [closed] 【发布时间】:2020-09-01 10:02:02 【问题描述】:

示例 API:

/product/list
/product/save
/product/update
/product/delete

假设/product 是具有过滤器的基本路径,用于在处理请求之前验证身份验证。

目前,实现了 OAuth 身份验证,因此所有请求都在验证访问令牌后得到处理。我们得到了在 OAuth 身份验证模式和 BASIC 身份验证模式下提供唯一上下文的用例,即/product/list。但似乎为同一上下文混合多个身份验证不是一种正确的方法,因此期待在这种情况下遵循的最佳实践是什么

【问题讨论】:

显示你的 Spring Security 配置。 【参考方案1】:

一个好的目标是 API 中的统一方法,它始终接收 OAuth 2.0 访问令牌:

API 的 UI 客户端通过授权代码流 (PKCE) 获取访问令牌 其他客户端(例如后端进程)通过客户端凭据流获取令牌

我会让任何使用基本 OAuth 的客户端更新到客户端凭据,这几乎相同,需要呼叫者 ID 和呼叫者密码。

两种类型的客户端都可以调用列表端点,并且在这两种情况下,您的 API 都需要验证访问令牌,在需要时识别调用者,然后可能过滤允许调用者获取的项目。

【讨论】:

以上是关于为同一 API 混合多个身份验证模型是最佳实践吗? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

API测试最佳实践 - 身份验证

在 C# Web api 上进行用户身份验证的最佳实践是啥?

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

Web API 身份验证最佳实践

Swift iOS 应用程序到 REST PHP API - 身份验证的最佳实践是啥?

存储 oauth 和本地身份验证方法的最佳实践?