using Apache.NMS.ActiveMQ.Commands;
using Microsoft.SqlServer.Dts.Runtime;
using Model;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Org.BouncyCastle.Ocsp;
using SgManager.AI;
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Security.Cryptography;
using System.Text;
namespace BLL
{
public static class IDPDataService
{
//private static readonly string IDPApiUrl = "https://idp.cwcec.com/";
private static readonly string IDPApiUrl = SysConstSetService.WuHuanIDPPath;
////private static readonly string publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQChnc2YD0YzJPx6QTh+/n7XzjR1ugFzrsmPolJhpCfWMKrSGbT7iX/Kgcm1AI+T95K4Jzv3KS42QTecZ1ziJ4Rr9Luzw+9ZCSjMZgrmAUbY5IeBaA6GzaSk8UWHZ4n5PL+GUGq+2f+COL7+KCS2AxEpaqDZVrJrIfg/UektdgNyzwIDAQAB";
private static readonly string publicKey = "g1sk7Xtc1TJouHdY4+FAe5atGCu2n17NhoKVDV57pki1IL+9+S7BY4gxAjmMkUU2/cbCCdbPoUJLBrCBCjX7yI3UJW6FZwQWkn3kVoeulLEwdPCIq/GUjMXaWf3Iaaad5wBUFbfXAzv15VN6z48Nt1IY/O8YEzhIpuZdtEgDdos=AQAB";
///
/// 第三方加密认证接口
///
/// 五环IDP系统SessionId有效期30分钟
///
public static SessionItem GetAuthenticationSession()
{
//// 创建RSA加密服务提供者
////using (RSA rsa = RSA.Create())
//using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
//{
//// 获取公钥false表示只导出公钥
//string publicKey = rsa.ToXmlString(false);
//// 获取私钥true表示导出公钥和私钥
//string privateKey = rsa.ToXmlString(true);
SessionItem session = new SessionItem();
////用户名加密
//string encryptedUsername = EncryptData("dataviewer", publicKey);
////密码加密
//string encryptedPassword = EncryptData("a3365$!", publicKey);
//用户名加密后的密文
string encryptedUsername = "k0N0tx/hfRPY0v2lq1G8eH6hCO+UiMqlSZi1PD6bhGf4YpP/koJq5hfMsDSzdn3dZjzExrwyrjFWp/1jZLde0+gRbQ0D7tzm0R5D6AmriodD2cJvrEiwtDy7SeGNloSaNmpTEMuycpuueiOeGhMkKnTwWfRkEw73lxEpTmaahq4=";
//密码加密后的密文
string encryptedPassword = "HLLroiNJJzyTWJt9td1xgChbVzyQkoxWCGGXqdwI2cvlUF/A30FAPaInszSwEhNRQlJZZ01EODElemkgv36DMF+XGwfDi0BfIq9jKG+/+wq0TVOHNhiu2NPzpn5Ji2X3yXIXpH1zv6XEtkvx/qiLToZYfRQCufsl5vH1cZxk2fQ=";
string url = $"{IDPApiUrl}UAMS/authEncrypt";
string contenttype = "application/json;charset=utf-8";
var body = new
{
encryptedUsername = encryptedUsername,
encryptedPassword = encryptedPassword
};
string pushContent = JsonConvert.SerializeObject(body);
//var returndata = BLL.APIGetHttpService.OutsideHttp(url, "POST", null, null, pushContent);
string strJosn = APIGetHttpService.Http(url, "POST", contenttype, null, pushContent);
JObject obj = JObject.Parse(strJosn);
if (!string.IsNullOrEmpty(strJosn))
{
string value = obj["value"].ToString();
string name = obj["name"].ToString();
session.value = value;
session.name = name;
}
return session;
//}
}
///
/// 加密字符串
///
/// 加密信息
/// 公钥
///
public static string EncryptData(string data, string publicKey)
{
using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
{
string result = string.Empty;
try
{
rsa.FromXmlString(publicKey); //从字符串加载公钥
byte[] dataBytes = Encoding.UTF8.GetBytes(data);
byte[] encryptedBytes = rsa.Encrypt(dataBytes, false); //使用公钥加密数据,false表示使用OAEP填充方式
result = Convert.ToBase64String(encryptedBytes); //返回Base64编码的加密数据
}
catch (Exception ex)
{
Console.WriteLine("Error encrypting: {0}", ex.Message);
}
return result;
}
}
///
/// 获取工作包结构化数据
///
public static void GetIDPProjectMasterData()
{
string projectId = string.Empty;//五环主数据项目Id
string wbsCode = string.Empty;//五环主数据wbs编码
string workitemCode = string.Empty;//五环主数据文件类别码
//https://idp.cwcec.com/OSS/projects/9100168/wbs/000000/workitems/CP2100/objects/latest
//string url = $"{IDPApiUrl}/OSS/projects/{projectId}/wbs/{wbsCode}/workitems/{workitemCode}/objects/latest";
string url = $"{IDPApiUrl}/OSS/projects/9100168/wbs/000000/workitems/CP2100/objects/latest";
try
{
var session = GetAuthenticationSession();
ErrLogInfo.WriteLog($"Session——name:{session.name};value:{session.value}");
Hashtable newToken = new Hashtable { { session.name, session.value } };
var returndata = BLL.APIGetHttpService.OutsideHttp(url, "GET", null, newToken, null);
}
catch (WebException ex)
{
}
finally
{
}
}
//public static void AddPMP_Project(List newtables)
//{
// Model.SGGLDB db = Funs.DB;
// db.PMP_Project.InsertAllOnSubmit(newtables);
// db.SubmitChanges();
//}
//public static void DeleteAllPMP_Project()
//{
// Model.SGGLDB db = Funs.DB;
// if (db.PMP_Project.FirstOrDefault() != null)
// {
// db.PMP_Project.DeleteAllOnSubmit(db.PMP_Project);
// db.SubmitChanges();
// }
//}
}
public class SessionItem
{
///
/// value
///
public string value { get; set; }
///
/// name
///
public string name { get; set; }
}
}