C#接入vault方法
在C#中接入Vault的方法有多种。以下是其中两种常用的方式:
-
使用HashiCorp Vault .NET客户端库(VaultSharp)进行接入:
using System; using VaultSharp; using VaultSharp.Core; class Program { static void Main(string[] args) { // 创建VaultClient对象并配置连接信息 var vaultConfig = new VaultConfigurationBuilder() .WithAddress("http://localhost:8200") // Vault服务器地址 .Build(); using (var client = new VaultClient(new HttpClient(), vaultConfig)) { try { // 登录到Vault var loginResponse = client.Auth().LoginAsync(new UserPassAuthenticationInfo { UserName = "your-username", Password = "your-password" }).Result; if (!loginResponse.IsSuccessful()) { Console.WriteLine($"Failed to authenticate with Vault: {loginResponse.ErrorMessage}"); return; } // 获取访问令牌 string token = loginResponse.Data["auth"]["client_token"]; // 设置访问令牌为默认身份验证标头 client.SetDefaultToken(token); // 调用Vault API进行操作 var secretResponse = client.Secrets.KV.ReadSecretAsync("secret/myapp").Result; if (!secretResponse.IsSuccessful()) { Console.WriteLine($"Failed to read secret from Vault: {secretResponse.ErrorMessage}"); return; } // 处理返回结果 foreach (var kv in secretResponse.Data["data"]) { Console.WriteLine($"Key: {kv.Key}, Value: {kv.Value}"); } } catch (Exception ex) { Console.WriteLine($"An error occurred while interacting with Vault: {ex.Message}"); } } } }
-
直接通过HTTP发送REST请求来与Vault交互:
using System; using System.Net.Http; using Newtonsoft.Json; class Program { static async Task Main(string[] args) { const string url = "http://localhost:8200"; // Vault服务器地址 // 构造API路由和参数 var apiRoute = "/v1/auth/userpass/login"; var requestBody = JsonConvert.SerializeObject(new { username = "your-username", password = "your-password" }); // 创建HttpClient并添加必要的Header using (var httpClient = new HttpClient()) { httpClient.BaseAddress = new Uri(url); httpClient.DefaultRequestHeaders.Add("X-Vault-Token", "your-access-token"); // 发送POST请求并等待响应 var response = await httpClient.PostAsJsonAsync(apiRoute, requestBody); // 确保成功收到响应 if (response.StatusCode == System.Net.HttpStatusCode.OK) { // 从响应内容中提取所需信息 var content = await response.Content.ReadAsStringAsync(); dynamic result = JsonConvert.DeserializeObject<dynamic>(content); // 处理返回结果 string accessToken = result["auth"]["client_token"].ToString(); Console.WriteLine($"Access Token: {accessToken}"); } else { Console.WriteLine($"Failed to authenticate with Vault: Status Code - {response.StatusCode}"); } } } }
-
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律