我正在尝试将我的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 响应,这意味着身份验证失败。关于编写摘要验证标头的信息很少,我对如何做到这一点有点困惑。
任何帮助将不胜感激。 谢谢!
这里有解决方案
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)
}