using System; using System.Net; using System.Security.Cryptography; using System.Text; using Model; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using RestSharp; using ResponeData = Model.Customization._14HJ.ResponeData; namespace BLL.Oauth { public class OauthService_14HJ : IOauthService { public Sys_User GetLoginInfo(string token, ref string message) { /** * 测试环境:http://bjjgq.ticp.net:12780 私钥:rd8VreAxoI00WApZ9lo5tefkMMtho2mVI9Bo5Yajk18nKuOpcnLuaFUHuTyPEUuG 公钥:203991581b97402083abcad057cc7e5d */ /** * 正式环境: http://aep.cncecbjkm.com:10004 私钥:O6AJF6ssJomrDz2m1yvvy3ZRg1tyle98tDBqmabgK7OwjSPUNZRtaDItTjV2fQ2c 公钥:f846dfebe55046a69d2406fa844de934 */ var user = new Sys_User(); ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; var pubKey = "f846dfebe55046a69d2406fa844de934"; //公钥 var priKey = "O6AJF6ssJomrDz2m1yvvy3ZRg1tyle98tDBqmabgK7OwjSPUNZRtaDItTjV2fQ2c"; // 私钥 var reqUrl = "https://aep.cncecbjkm.com/kmAep" + "/auth/token-auth/" + token; // 构造请求 var client = new RestClient(reqUrl); var request = new RestRequest(Method.GET); // 添加请求头 var timestamp = (long)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalMilliseconds; var requestString = ""; var uri = "/auth/token-auth/" + token; var signInfo = CalculateSignature(pubKey, uri, requestString, priKey, timestamp); request.AddHeader("pubKey", pubKey); request.AddHeader("ts", timestamp.ToString()); request.AddHeader("signInfo", signInfo); // 发送请求 var response = client.Execute(request); var resultData = JsonConvert.DeserializeObject(response.Content); // Model.Customization._14HJ.ResponeData resultData = Newtonsoft.Json.JsonConvert.DeserializeObject("{\r\n \"code\": \"0\",\r\n \"msg\": \"成功\",\r\n \"data\": {\r\n \"phone\": \"13265659898\",\r\n \"tenantCode\": \"789075185775935488\",\r\n \"tenantName\": \"中化学数智科技有限公司\",\r\n \"userCode\": \"789075185775935555\"\r\n }\r\n}"); if (resultData.code == "0") { var jt = JsonConvert.DeserializeObject(resultData.data?.ToString()); var usercode = jt["userCode"].ToString(); user = UserService.GetUserByUserCode(usercode); if (user == null) { message = "未找到该用户"; } } else { message = resultData.msg; } return user; } /// /// 创建签名 /// /// /// /// /// /// /// private string CalculateSignature(string pubKey, string uri, string requestString, string priKey, long timestamp) { var dataToSign = pubKey + uri + requestString + priKey + timestamp; var dataToSignBytes = Encoding.UTF8.GetBytes(dataToSign); using (var sha1 = SHA1.Create()) { var hash = sha1.ComputeHash(dataToSignBytes); var sub = new StringBuilder(); foreach (var t in hash) { sub.Append(t.ToString("x2")); } return sub.ToString(); } } } }