92 lines
3.9 KiB
C#
92 lines
3.9 KiB
C#
|
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();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|