2017-02-28 5 views
1

Vault Golang Packageを使用してAPIを使用して認証しようとしています。素晴らしいとすべてですボールトAPIパッケージを使用した認証方法

client, err := api.NewClient(&api.Config{Address: vaultAddr, HttpClient: httpClient}) 

if err != nil { 
    return nil, errors.Wrap(err, "could not create vault client") 
} 

client.SetToken(token) 

が、私は、他の認証方法のいずれか、(LDAP、Userpassなどを使用してAPIに対してのauthたい:

私は新しいクライアントを作成し、その後、私のトークンを設定することができます)

これも可能ですか? APIを使用してトークンを取得するにはどうすればよいですか?

私はちょうどAPIコールを使用してトークンを取得するためにnet/httpを使用することができますが、実際に別の方法で認証する方法はありますか?

答えて

2

私はこれを最終的に把握することができました。それは完全には明らかではありませんが、理にかなっています。

Vaultにはデータの書き込みに使用するgeneric write methodがあります。あなたはそれが見え単にURLを構築し、そのエンドポイント

にPUTリクエストを送信することにより、APIでログインを実行するためにこれを利用することができ、このようなビット:

// create a vault client 
client, err := api.NewClient(&api.Config{Address: url, HttpClient: httpClient}) 
if err != nil { 
    panic(err) 
} 

// to pass the password 
options := map[string]interface{}{ 
    "password": password,   
} 

// the login path 
// this is configurable, change userpass to ldap etc 
path := fmt.Sprintf("auth/userpass/login/%s", username) 

// PUT call to get a token 
secret, err := client.Logical().Write(path, options) 
+0

しかし、どのように私は秘密を受け取ったことを使用することができますその後のリクエスト?クライアントでトークンを変更するにはどうすればよいですか? – NobbZ

関連する問題