首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VaultSharp AppRole登录解包装问题

VaultSharp AppRole登录解包装问题
EN

Stack Overflow用户
提问于 2022-08-16 16:09:04
回答 1查看 284关注 0票数 0

我使用从UI获得的标准令牌通过CLI登录。然后我运行这个以获得一个包装标记:

代码语言:javascript
复制
vault write auth/approle/login role_id="e309ea24-994c-771e-939f-49e24a936ef2" secret_id="9597c7d0-3a88-c8f7-e43f-e8999600e38e"

电话响了:

代码语言:javascript
复制
Key                     Value
---                     -----
token                   s.5NuuJxEfdiJrfSiXXCU5MjZ6.dYgGw
token_accessor          3JFGpuaO45DuxD9nd6mUL6ic.dYgGw
token_duration          1h
token_renewable         true
token_policies          ["default" "transaction"]
identity_policies       []
policies                ["default" "transaction"]
token_meta_role_name    transaction

现在,我在一个展开调用中使用了令牌,如下所示:

代码语言:javascript
复制
IVaultClient vaultClientForUnwrapping = new VaultClient(
    new VaultClientSettings(_settings.Address, new TokenAuthMethodInfo(vaultToken: wrappingToken))
);

string appRoleAuthSecretId
    = vaultClientForUnwrapping.V1.System
        .UnwrapWrappedResponseDataAsync<Dictionary<string, object>>(tokenId: null)
            .Result.Data["secret_id"]
                .ToString();

当试图运行上面的解包装调用时,我得到了以下异常:

发生一个或多个错误。({“错误”:“包装令牌无效或不存在”)}

有人能帮忙吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-18 15:13:37

调用vault write auth/approle/login role_id="e309ea24-994c-771e-939f-49e24a936ef2" secret_id="9597c7d0-3a88-c8f7-e43f-e8999600e38e"不是返回包装令牌,而是返回原始令牌。

本质上,为了获得包装的令牌,您需要提供-wrap-ttl标志。

代码语言:javascript
复制
#!/usr/bin/env bash
vault server -dev -dev-root-token-id=root -dev-listen-address=127.0.0.1:8200 &
VAULT_SERVER_PID=$!
export VAULT_ADDR=http://127.0.0.1:8200
export VAULT_TOKEN=root

vault auth enable approle
vault write auth/approle/role/test-role policies=default
ROLE_ID=$(vault read -format=json auth/approle/role/test-role/role-id | jq -r .data.role_id)
SECRET_ID=$(vault write -f -format=json auth/approle/role/test-role/secret-id | jq -r .data.secret_id)
VAULT_WRAP_TOKEN=$(vault write -wrap-ttl=1h -format=json auth/approle/login role_id=${ROLE_ID} secret_id=${SECRET_ID} | jq -r .wrap_info.token)

VAULT_TOKEN=${VAULT_WRAP_TOKEN} vault write -f sys/wrapping/unwrap

kill -9 ${VAULT_SERVER_PID}

这是一个示例脚本,它将提供一个实际的包装令牌,以及展开它的过程。您可以将-output-curl-string标志添加到上面的任何vault命令中,以查看API命令可能是什么。我使用jq编程将ID传递给下一个命令,但如果希望看到来自vault二进制文件的表格式响应,则可以省略-format=json和尾随| jq -r ...

大多数需要Vault令牌的库之所以执行包装步骤,是因为可以确定除了令牌的最终用户之外,没有任何东西见过令牌。包装令牌只能使用一次,因此确保在使用之前没有其他任何东西对令牌进行解压。

但是,对于VaultSharp,漫不经心的一瞥建议您可以将角色ID和秘密ID直接传递给库,并让它根据需要生成自己的令牌。你可能希望研究一下这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73377049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档