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

时间:2015-02-24 12:07:20

标签: 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

成功,我在服务器上收到的标题是这样的:

{
"user-agent": "curl/7.37.1",
"host": "localhost:3000",
"accept": "*/*",
"authorization": "Basic test:test",
"app_key": "AN-APP-KEY",
"app_secret": "XyZ"
}

另一方面,命令形式为:

curl -v --user 'test:test' -H 'APP_KEY: AN-APP-KEY' -H 'APP_SECRET: XyZ' http://localhost:3000/auth

没有成功。实际上我在服务器端看到的标题是这样的:

{
"authorization": "Basic dGVzdF9hdXRoOnRlc3Q=",
"user-agent": "curl/7.37.1",
"host": "localhost:3000",
"accept": "*/*",
"app_key": "AN-APP-KEY",
"app_secret": "XyZ"
}

所以,问题是:你知道为什么会这样,以及如何在服务器端解决它?第二个curl命令应该是不同的,为什么?

期待您的帮助。

1 个答案:

答案 0 :(得分:2)

您的第一个示例,即您声称可以使用的示例,实际上并不是http basic auth的实现。您正在传递Authentication:标头,但它不符合标准。身份验证标头应包含单词Basic,后跟base64编码格式的凭据。这就是你在例2中看到的内容(如果解码你得到的base64" test_auth:test")。

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