using System; using System.Collections.Generic; using System.Net.Http; using System.Net.Http.Headers; using System.Net.Http.Json; using System.Threading.Tasks; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Options; namespace Win_in.Sfs.Scp.WebApi.XmlHost { public class TokenService : ITokenService { private readonly IConfiguration _configuration; private readonly RemoteAuthenticationOptions _options; public TokenService(IConfiguration configuration, IOptions options) { _configuration = configuration; _options = options.Value; } public async Task GetToken() { var baseUrl = _configuration["RemoteServices:Default:BaseUrl"]; const string routeString = "connect/token"; var client = new HttpClient(); client.BaseAddress = new Uri(baseUrl); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); var content = new FormUrlEncodedContent(new[] { new KeyValuePair("client_id",_options.client_id), new KeyValuePair("client_secret",_options.client_secret), new KeyValuePair("grant_type",_options.grant_type), new KeyValuePair("username",_options.username), new KeyValuePair("password",_options.password), }); var response = await client.PostAsync(routeString, content); response.EnsureSuccessStatusCode(); var dto = await response.Content.ReadFromJsonAsync(); return dto; } } }