如何将附加数据传递给 restful API 基本身份验证

How to pass additional data to restful API Basic authentication

我正在为一个项目开发我的第一个 restful API。

我了解并已使基本身份验证正常工作,使用格式 Basic username:password,其中 username:password 是 Base64 编码。

目前,我们在 'username' 字段中传递用户的电子邮件地址,在 'password' 字段中传递用户的密码。

问题是电子邮件地址在应用程序中不是唯一的。它在应用程序中的每个组织都是唯一的。

因此,为了使用户成功登录,我们需要将另一个值传递给 API,它指示组织是什么(我们的想法是传递一个用于查找的密钥组织)

我的问题是基本身份验证过程只允许您传递两个值(用户名、密码),而我需要传递三个。有没有办法将更多数据传递给基本身份验证过程?或者我是否必须使用其他类型的身份验证来实现此目的?

我的想法是修改基本身份验证,使其采用三个值,例如:username:password:orgkey 我不知道这是否被允许或违反基本身份验证协议?

尽管这个问题确实与语言无关,但为了记录,我使用的是 Coldfusion 和 Taffy 插件。

如有任何指导,我们将不胜感激。

谢谢

正如我在回答中试图解释的那样,基本身份验证不是保护 Web API 的良好协议 here and here

在测试自动化等方面支持它是可以的,但我不会在生产中使用它。您将很难保守密码的秘密,因为 JavaScript 和移动客户端都不能被信任保守秘密。

我不清楚为什么电子邮件地址在组织中不是唯一的。您不发送 at 符号 ('@') 后的部分吗?

您不能在基本身份验证凭据字段中引入其他字段。根据RFC7235,credentials字段只能包含:

    credentials = auth-scheme [ 1*SP ( token68 / #auth-param ) ]

我会研究基于安全令牌的身份验证方案,例如使用 JWT tokens