oauth2-proxy/AutomationTest/BusinessLayer/VueSSOTokenBL.cs

39 lines
1.4 KiB
C#

using System;
using System.IO;
using System.Security.Cryptography;
using System.Web;
namespace Philips.EDI.Foundation.APIGateway.AutomationTest.BusinessLayer
{
public class VueSSOTokenBL
{
public string GenerateSsoToken(string username, string sessionTime, string symmetricKey)
{
var ssoToken = $"user_name={username}&session_time={sessionTime}";
return EncryptSsoToken(ssoToken, symmetricKey);
}
private static string EncryptSsoToken(string toBeEncryptedUrl, string symmetricKey)
{
byte[] encrypted;
var Key = Convert.FromBase64String(symmetricKey);
byte[] IV = new byte[16];
using (AesManaged aes = new AesManaged())
{
ICryptoTransform encryptor = aes.CreateEncryptor(Key, IV);
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
{
// Create StreamWriter and write data to a stream
using (StreamWriter sw = new StreamWriter(cs))
sw.Write(toBeEncryptedUrl);
encrypted = ms.ToArray();
return HttpUtility.UrlEncode(Convert.ToBase64String(encrypted));
}
}
}
}
}
}