NodeJS - 如何编写摘要身份验证标头以连接到 Mongodb Atlas Api

问题描述 投票:0回答:1

我正在尝试将我的nodejs应用程序与我的mongodb atlas集群链接,并且我需要能够使用AtlasDB API添加和删除用户。 API 需要 Digest 身份验证才能访问,并且 API 对于如何实际编写此标头非常模糊。 这是我目前的尝试:

export async function createUser(userData) {
const options = {
    roles: [
        {
            roleName: "readWrite",
            databaseName: process.env.MONGO_DBNAME
        }
    ]
}
const url = `${process.env.MONGO_API_BASEURL}/groups/${process.env.MONGO_PROJECT_ID}/databaseUsers`


const result = await axios({
    method: 'POST',
    url,
    headers: {'WWW-Authenticate': `Digest ${process.env.MONGO_USERNAME}:${process.env.MONGO_APIKEY}},
    data: {
        databaseName: "admin",
        username: userData.username,
        password: userData.password,
        roles: options.roles,
        groupId: process.env.MONGO_PROJECT_ID
    }
})

return result}

毫不奇怪,我收到了 401 响应,这意味着身份验证失败。关于编写摘要验证标头的信息很少,我对如何做到这一点有点困惑。

任何帮助将不胜感激。 谢谢!

javascript node.js http http-authentication digest
1个回答
0
投票

这里有解决方案

1-安装“urllib”

npm install urllib

https://www.npmjs.com/package/urllib

2- 替换您的用户名、密码、组织 ID/项目 ID

import urllib from 'urllib'
try {

let authorizationUser = 'Public_Key'
let authorizationPassword = 'Private_Key'

const data = await urllib.request('URL_MONGO_ATLAS_API', {
    method: 'GET',
    contentType: 'application/json',
    headers: {
        'accept': 'application/vnd.atlas.2023-02-01+json'
    },
    digestAuth: `${authorizationUser}:${authorizationPassword}`
})

console.log("🚀 ~ file: test.mjs:26 ~ data:", data.data.toString())

} catch (error) {
console.log("🚀 ~ file: test.mjs:27 ~ error:", error)

}
© www.soinside.com 2019 - 2024. All rights reserved.