SGGL_JT/SUBQHSE/BLL/Oauth/OauthService_14HJ.cs

92 lines
3.9 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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();
}
}
}
}