大家好,
我正在尝试从Vault中的approle auth方法获取客户端令牌。我已经配置了领事模板,它获取角色ID和秘密ID,然后使用它们在auth / approle / login端点获取client_token。真正奇怪的是,前两个步骤已成功执行并返回了数据,但是,在这里很难获得client_token。我使用wireshark分析了请求,并检查了请求client_token的请求的响应,它清楚地显示了包含client_token的json结果。但是领事模板确实能识别出回报,并为我提供了以下结果:
{322a47b9-bf23-193d-8117-228637253fde 0 false map[] [] 0xc42001cf50 <nil>}
。
使用相同的方法来请求secret-id,但是consul-template已成功返回它并识别了json对象。那不是很奇怪吗?!
您可以在下面找到领事模板:
{{define "token" }}
{{ with secret "auth/approle/role/python-role/role-id" }}{{ $role:= (print "role_id= " .Data.role_id) }}
{{ with secret "auth/approle/role/python-role/secret-id" "role_name= python-role" }}{{ $secret:= (print "secret_id= " .Data.secret_id) }}
{{- with secret "auth/approle/login/" $role $secret -}}{{ . }}{{ end }}
{{ end }}
{{ end }}
{{ end }}
{{template "token"}}