使用curl对node.js进行基本身份验证

使用curl对node.js进行基本身份验证,node.js,curl,basic-authentication,Node.js,Curl,Basic Authentication,我正在开发一个应用程序,作为身份验证方法,我使用基本身份验证。到目前为止,一切都很顺利,但很明显,我仍然在做一些错误的事情,正如一位新合伙人所指出的那样 特别是以下形式的命令: curl -v -H 'Authorization: Basic test:test' -H 'APP_KEY: AN-APP-KEY' -H 'APP_SECRET: XyZ' http://localhost:3000/auth curl -v --user 'test:test' -H 'APP_KEY: AN-

我正在开发一个应用程序,作为身份验证方法,我使用基本身份验证。到目前为止,一切都很顺利,但很明显,我仍然在做一些错误的事情,正如一位新合伙人所指出的那样

特别是以下形式的命令:

curl -v -H 'Authorization: Basic test:test' -H 'APP_KEY: AN-APP-KEY' -H 'APP_SECRET: XyZ' http://localhost:3000/auth
curl -v --user 'test:test' -H 'APP_KEY: AN-APP-KEY' -H 'APP_SECRET: XyZ' http://localhost:3000/auth
成功,我在服务器上收到的标题如下:

{
"user-agent": "curl/7.37.1",
"host": "localhost:3000",
"accept": "*/*",
"authorization": "Basic test:test",
"app_key": "AN-APP-KEY",
"app_secret": "XyZ"
}
{
"authorization": "Basic dGVzdF9hdXRoOnRlc3Q=",
"user-agent": "curl/7.37.1",
"host": "localhost:3000",
"accept": "*/*",
"app_key": "AN-APP-KEY",
"app_secret": "XyZ"
}
另一方面,以下形式的命令:

curl -v -H 'Authorization: Basic test:test' -H 'APP_KEY: AN-APP-KEY' -H 'APP_SECRET: XyZ' http://localhost:3000/auth
curl -v --user 'test:test' -H 'APP_KEY: AN-APP-KEY' -H 'APP_SECRET: XyZ' http://localhost:3000/auth
没有成功。实际上,我可以在服务器端看到的标题如下:

{
"user-agent": "curl/7.37.1",
"host": "localhost:3000",
"accept": "*/*",
"authorization": "Basic test:test",
"app_key": "AN-APP-KEY",
"app_secret": "XyZ"
}
{
"authorization": "Basic dGVzdF9hdXRoOnRlc3Q=",
"user-agent": "curl/7.37.1",
"host": "localhost:3000",
"accept": "*/*",
"app_key": "AN-APP-KEY",
"app_secret": "XyZ"
}
所以,问题是:您知道为什么会发生这种情况,以及如何在服务器端解决它吗?第二个curl命令应该不同吗?为什么


期待您的帮助。

您声称有效的第一个示例实际上不是http basic auth的实现。您正在传递一个Authentication:头,但它不符合标准。身份验证标头应包含单词Basic,后跟base64编码格式的凭据。这是您在示例2中看到的(如果解码base64,您将得到“test\u auth:test”)

因此,为了支持基本身份验证,第二个是您需要处理的。
要在服务器中处理此问题,请使用现有模块之一,例如,让它为您解码凭据。

谢谢。如果您知道的话,我可以再问您一个问题吗:为什么我们要转换到base64?只是为了在密码中允许字符,否则在头中就不允许使用这些字符。