SGGL_JT/SUBQHSE/BLL/Oauth/OauthService_14HJ.cs

92 lines
3.9 KiB
C#
Raw Normal View History

2025-04-07 17:43:30 +08:00
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<ResponeData>(response.Content);
// Model.Customization._14HJ.ResponeData resultData = Newtonsoft.Json.JsonConvert.DeserializeObject<Model.Customization._14HJ.ResponeData>("{\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<JObject>(resultData.data?.ToString());
var usercode = jt["userCode"].ToString();
user = UserService.GetUserByUserCode(usercode);
if (user == null)
{
message = "未找到该用户";
}
}
else
{
message = resultData.msg;
}
return user;
}
/// <summary>
/// 创建签名
/// </summary>
/// <param name="pubKey"></param>
/// <param name="uri"></param>
/// <param name="requestString"></param>
/// <param name="priKey"></param>
/// <param name="timestamp"></param>
/// <returns></returns>
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();
}
}
}
}