我正在尝试在 Vault 上获取登录/传递身份验证。当我尝试此处 API 文档中给出的方法时:https://www.vaultproject.io/api/auth/userpass/index.html#login
我收到此错误:
$ curl --request POST --data @payload.json https://<myurl>:8200/v1/auth/userpass/login/<mylogin> -k
{"errors":["missing client token"]}
而且我找不到有关此错误的信息。这让我想知道会发生什么,因为我想使用登录/通行证进行身份验证以获取令牌,所以没有它是正常的。
以下是 payload.json 的内容:
{
"password": "foo"
}
有没有办法使用用户名/密码登录?这是当用户不知道其令牌时我唯一的回退方法。
谢谢!
好的,所以我通过试验弄清楚了。
因此,用户通行证身份验证确实被禁用了。我必须使用LDAP身份验证。使用已安装的 Vault-UI,我设法找到了要进行身份验证的 URL。如果是以下: https://******:8200/v1/auth/<ldap>/login/<user>
这样它就可以工作了。
不幸的是,它最终无济于事。我们的想法是在本地同步 Vault 数据,但 Vault API 实际上并不是为这种访问而构建的。它需要大量请求,并且最终对于同步的一些机密非常慢。
确保您在正确的命名空间下登录。如果在 CLI 工具使用的默认命名空间以外的其他名称空间下启用身份验证方法,则会收到此错误。
您可以使用 -ns=my/namespace/
参数或 VAULT_NAMESPACE
环境变量指定命名空间。
例如,如果您的命名空间是"甜点/冰淇淋">
vault login -ns=desserts/icecream/ -method=userpass username=ian
# OR
export VAULT_NAMESPACE=desserts/icecream/
vault login -method=userpass username=ian
就我而言,我没有将保管库令牌设置为正确的环境变量。您必须将值设置为 VAULT_TOKEN
以便它在后续请求中使用它 我的 env 变量被Vault_Token
,因此它总是说缺少客户端令牌。
默认情况下,保险柜会检查此环境变量以查找令牌。
vault kv get --field "ACCESS_KEY_ID" secret/my-secret