HttpClient调用IdentityServer4获取Token并调用接口
using System; using System.Net.Http; using IdentityModel.Client; namespace ClientCredential { class Program { static void Main(string[] args) { try { new Program().GetAsync(); } catch (Exception ex) { System.Console.WriteLine(ex.Message); } Console.ReadKey(); } public async void GetAsync() { var diso = await DiscoveryClient.GetAsync("http://localhost:5003"); if (diso.IsError) { System.Console.WriteLine("diso.Error"); } var tokenClient = new TokenClient(diso.TokenEndpoint, "client", "secrt"); var tokenResponse = await tokenClient.RequestClientCredentialsAsync("api"); if (tokenResponse.IsError) { System.Console.WriteLine(tokenResponse.Error); } else { System.Console.WriteLine(tokenResponse.Json); } using (var httpClient = new HttpClient()) { httpClient.SetBearerToken(tokenResponse.AccessToken); var response = await httpClient.GetAsync("http://localhost:5001/api/values"); if (response.IsSuccessStatusCode) { System.Console.WriteLine(await response.Content.ReadAsStringAsync()); } } } } }
输出结果: