我正在为项目开发我的第一个restful API。
我理解并使用Basic username:password
格式正确使用基本身份验证,其中username:password是Base64编码。
目前,我们会在用户名'中传递用户的电子邮件地址。密码中的字段和密码'字段。
问题是电子邮件地址在应用程序中不是唯一的。它在应用程序中是每个组织的唯一。
因此,为了成功记录用户,我们需要将另一个值传递给API,以指示组织是什么(想法是传递用于查找组织的密钥)
我的问题是基本身份验证过程只允许您传递两个值(用户名,密码),而我需要传递三个。有没有办法将更多数据传递给基本身份验证过程?或者我是否必须使用其他类型的身份验证才能实现此目的?
我的想法是修改基本身份验证,以便它需要三个值,例如:username:password:orgkey 我不知道是否允许或违反基本身份验证协议?
虽然这个问题确实与语言无关,但我记录的是使用Coldfusion和Taffy插件。
任何指导都将不胜感激。
由于
答案 0 :(得分:2)
我尝试在我的答案here和here中解释,基本身份验证不是保护Web API的良好协议。
支持测试自动化等功能是可以的,但我不会在生产中使用它。您将很难保密密码,因为无论是JavaScript还是移动客户端都无法保密。
我不清楚为什么电子邮件地址在各个组织中并不是唯一的。你是不是在签到后发送了这个部分(' @')?
您无法在基本身份验证凭据字段中引入其他字段。根据{{3}},凭据字段只能包含:
credentials = auth-scheme [ 1*SP ( token68 / #auth-param ) ]
我会研究一种基于安全令牌的身份验证方案,例如使用RFC7235。