using System.Text; using Dlhis.User.Identity.Request; using Kurisu.AspNetCore.Authentication.Options; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; using Newtonsoft.Json.Linq; namespace Dlhis.User.Identity.Controllers; /// /// OAuth2认证 /// [Route("api/[controller]")] [ApiController] public class OAuth2Controller : ControllerBase { private readonly IHttpClientFactory _httpClientFactory; private readonly IOptions _identityServerOption; public OAuth2Controller(IHttpClientFactory httpClientFactory, IOptions identityServerOption) { _httpClientFactory = httpClientFactory; _identityServerOption = identityServerOption; } [HttpPost("clientgrant")] public async Task ClientGrant(ClientGrantRequest request) { var authority = "http://face.jinkosolar.com/oauth2";// _identityServerOption.Value.Authority; var httpClient = _httpClientFactory.CreateClient(); var content = new StringContent($"grant_type=client_credentials&client_id={request.ClientId}&client_secret={request.ClientSecret}&scope={request.Scope}", Encoding.UTF8, "application/x-www-form-urlencoded"); var response = await httpClient.PostAsync($"{authority}/connect/token", content); var result = await response.Content.ReadAsStringAsync(); return JObject.Parse(result); } }