啊鑫
5 天以前 00a72fff219241eb5b0405a066cc859d07cf7735
Controllers/AuthController.cs
@@ -1,20 +1,23 @@
using System.Net;
using System.Security.Cryptography;
using System.Text;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Security.Cryptography;
using Newtonsoft.Json;
using System.Text;
using System.Net;
using Microsoft.AspNetCore.DataProtection;
using Microsoft.Extensions.Hosting;
namespace NewPdaSqlServer.Controllers;
namespace NewPdaSqlServer.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class AuthController : ControllerBase
{
    // 以下常量建议放在appsettings.json配置文件中
    private const string APPID = "303233EF-AC39-40C1-8364-AC989C6258A5";
    private const string SECRET = "30b41949-bcfb-48f8-9847-feb6e043fe72";
    // private const string SPK = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApobID/gwmD9OofMG1gEcE94NCMeTYUq1cam/7ADZmxHCVpF143GaHWhqDdY0TTVbcUElsQ71DzAG2j3itWlIJBK5fVGwCo3sPpAvUDdKMh+Uivcp7yxdy/IDRA/PS4JARuEyM4cVJLhIOU2KnSlbIkheeoDkDgfaxu9kKrWnozJLiYraVTVDz9PdRX7fQdP+Zu/xB9txAGw4kvOm9HwgrzaSRdZEhisTJ5yyoNW/dLXtWKXA0cKhKOOIFu12TOrv/It6hl1ShTUuy79Pa51M9Oc2dEfVs1tluNXPWo1uFXQbBaJxdqZEJJlK7iW2uQFIao2O4XFHYThwy2+6116LtwIDAQAB";
    private const string HOST = "http://192.168.1.149:8099";
@@ -40,16 +43,17 @@
        try
        {
            var response = http.PostDataSSL(
                $"{HOST}/api/ec/dev/auth/applytoken",
                var response = http.PostDataSSL($"{HOST}/api/ec/dev/auth/applytoken",
                new Dictionary<string, string>(), headers);
            if (!string.IsNullOrEmpty(response))
            {
                var res = JsonConvert.DeserializeObject<dynamic>(response);
                if (res.status == "true") return res.token.ToString();
                    if (res.status == "true")
                    {
                        return res.token.ToString();
            }
                }
            return BadRequest("Failed to get token");
        }
        catch (Exception ex)
@@ -67,17 +71,16 @@
        var tokenResult = http.GetToken();
        if (tokenResult is not null)
        {
            var url = new Uri($"{HOST}/api/T100/GetSecretUserId");
                Uri url = new Uri($"{HOST}/api/T100/GetSecretUserId");
            return http.GetOaKqInfo(url, tokenResult, "DQ000344");
        }
        return BadRequest("无法获取有效Token");
    }
    [HttpPost("createWorkflow")]
    public ActionResult<string> CreateWorkflowRequest(
        [FromBody] WorkflowRequestDto request)
        public ActionResult<string> CreateWorkflowRequest([FromBody] WorkflowRequestDto request)
    {
        try
        {
@@ -102,12 +105,10 @@
            // 添加可选参数
            if (request.DetailData != null)
                parameters.Add("detailData",
                    JsonConvert.SerializeObject(request.DetailData));
                    parameters.Add("detailData", JsonConvert.SerializeObject(request.DetailData));
            if (request.OtherParams != null)
                parameters.Add("otherParams",
                    JsonConvert.SerializeObject(request.OtherParams));
                    parameters.Add("otherParams", JsonConvert.SerializeObject(request.OtherParams));
            // 发送请求
            var response = new HttpManager().PostDataSSL(
@@ -137,8 +138,7 @@
        rsa.ImportFromPem(publicKeyPem); // 使用.NET 5+ 内置PEM解析方法
        var parameters = rsa.ExportParameters(false);
        var publicKeyXml =
            $"<RSAKeyValue><Modulus>{Convert.ToBase64String(parameters.Modulus)}</Modulus><Exponent>{Convert.ToBase64String(parameters.Exponent)}</Exponent></RSAKeyValue>";
            string publicKeyXml = $"<RSAKeyValue><Modulus>{Convert.ToBase64String(parameters.Modulus)}</Modulus><Exponent>{Convert.ToBase64String(parameters.Exponent)}</Exponent></RSAKeyValue>";
        using var rsaProvider = new RSACryptoServiceProvider();
        rsaProvider.FromXmlString(publicKeyXml); // 使用转换后的XML格式公钥
@@ -151,11 +151,11 @@
public class HttpManager
{
        private readonly HttpClient _client = new HttpClient();
    // 以下常量建议放在appsettings.json配置文件中
    private const string APPID = "303233EF-AC39-40C1-8364-AC989C6258A5";
    private const string SECRET = "30b41949-bcfb-48f8-9847-feb6e043fe72";
    // private const string SPK = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApobID/gwmD9OofMG1gEcE94NCMeTYUq1cam/7ADZmxHCVpF143GaHWhqDdY0TTVbcUElsQ71DzAG2j3itWlIJBK5fVGwCo3sPpAvUDdKMh+Uivcp7yxdy/IDRA/PS4JARuEyM4cVJLhIOU2KnSlbIkheeoDkDgfaxu9kKrWnozJLiYraVTVDz9PdRX7fQdP+Zu/xB9txAGw4kvOm9HwgrzaSRdZEhisTJ5yyoNW/dLXtWKXA0cKhKOOIFu12TOrv/It6hl1ShTUuy79Pa51M9Oc2dEfVs1tluNXPWo1uFXQbBaJxdqZEJJlK7iW2uQFIao2O4XFHYThwy2+6116LtwIDAQAB";
    private const string HOST = "http://192.168.1.149:8099";
@@ -169,8 +169,6 @@
twIDAQAB
-----END PUBLIC KEY-----";
    private readonly HttpClient _client = new();
    public string PostDataSSL(string url,
        Dictionary<string, string> parameters,
        Dictionary<string, string> headers)
@@ -178,11 +176,15 @@
        var request = new HttpRequestMessage(HttpMethod.Post, url);
        foreach (var header in headers)
            {
            request.Headers.Add(header.Key, header.Value);
            }
        // 如果需要表单参数
        if (parameters.Count > 0)
            {
            request.Content = new FormUrlEncodedContent(parameters);
            }
        var response = _client.SendAsync(request).Result;
        return response.Content.ReadAsStringAsync().Result;
@@ -190,6 +192,8 @@
    public string GetToken()
    {
        var http = new HttpManager();
        var headers = new Dictionary<string, string>
        {
@@ -199,16 +203,17 @@
        try
        {
            var response = http.PostDataSSL(
                $"{HOST}/api/ec/dev/auth/applytoken",
                var response = http.PostDataSSL($"{HOST}/api/ec/dev/auth/applytoken",
                new Dictionary<string, string>(), headers);
            if (!string.IsNullOrEmpty(response))
            {
                var res = JsonConvert.DeserializeObject<dynamic>(response);
                if (res.status == "true") return res.token.ToString();
                    if (res.status == "true")
                    {
                        return res.token.ToString();
            }
                }
            return "token不存在!";
        }
        catch (Exception ex)
@@ -222,15 +227,13 @@
    {
        try
        {
            ServicePointManager.ServerCertificateValidationCallback +=
                (s, cert, chain, sslPolicyErrors) => true;
                ServicePointManager.ServerCertificateValidationCallback += (s, cert, chain, sslPolicyErrors) => true;
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
            var request = WebRequest.Create(url) as HttpWebRequest;
            request.Method = "POST";
            request.Timeout = 20000; // 20秒超时
            request.ContentType =
                "application/x-www-form-urlencoded; charset=utf-8"; // 明确指定编码
                request.ContentType = "application/x-www-form-urlencoded; charset=utf-8";  // 明确指定编码
            // 添加调试头信息
            request.Headers.Add("appid", APPID);
@@ -239,14 +242,12 @@
            // 构建带时区的日期参数
            var postData = new StringBuilder();
            var dateParam = DateTime.Now.AddDays(-1)
                .ToString("yyyy-MM-ddTHH:mm:sszzz");
                var dateParam = DateTime.Now.AddDays(-1).ToString("yyyy-MM-ddTHH:mm:sszzz");
            postData.AppendFormat("KQSDATE={0}&KQEDATE={1}",
                Uri.EscapeDataString(dateParam),
                Uri.EscapeDataString(dateParam));
            var byteData =
                Encoding.UTF8.GetBytes(postData.ToString()); // 改用UTF8编码
                byte[] byteData = Encoding.UTF8.GetBytes(postData.ToString());  // 改用UTF8编码
            // 更完善的请求写入
            using (var stream = request.GetRequestStream())
@@ -258,8 +259,9 @@
            using (var response = request.GetResponse() as HttpWebResponse)
            {
                if (response.StatusCode != HttpStatusCode.OK)
                    throw new WebException(
                        $"服务器返回错误状态码: {(int)response.StatusCode} {response.StatusDescription}");
                    {
                        throw new WebException($"服务器返回错误状态码: {(int)response.StatusCode} {response.StatusDescription}");
                    }
                using (var stream = response.GetResponseStream())
                using (var reader = new StreamReader(stream, Encoding.UTF8))
@@ -274,10 +276,8 @@
            var errorStream = response.GetResponseStream();
            using (var reader = new StreamReader(errorStream))
            {
                var errorDetails = reader.ReadToEnd();
                throw new Exception(
                    $"请求失败 [Status: {response.StatusCode}]: {errorDetails}",
                    ex);
                    string errorDetails = reader.ReadToEnd();
                    throw new Exception($"请求失败 [Status: {response.StatusCode}]: {errorDetails}", ex);
            }
        }
        catch (Exception ex)
@@ -325,3 +325,4 @@
    /// </summary>
    public Dictionary<string, object> OtherParams { get; set; }
}
}