Skip to content

Commit

Permalink
fix: added logging
Browse files Browse the repository at this point in the history
  • Loading branch information
pksorensen committed Dec 5, 2023
1 parent 4a780c2 commit c5de388
Showing 1 changed file with 25 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
using EAVFW.Extensions.DigitalSigning.DocuSign.Services;
using IdentityModel.Client;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Newtonsoft.Json.Linq;
using System;
Expand All @@ -21,13 +22,13 @@ namespace EAVFW.Extensions.DigitalSigning.Services
{
public class DocusignHttpClientHandler : DelegatingHandler
{

private readonly ILogger<DocusignHttpClientHandler> _logger;
private readonly IMemoryCache _memoryCache;
private readonly IDigitalSigningAuthContextProtector _digitalSigningAuthContextProtector;

public DocusignHttpClientHandler( IMemoryCache memoryCache, IDigitalSigningAuthContextProtector digitalSigningAuthContextProtector)
public DocusignHttpClientHandler( ILogger<DocusignHttpClientHandler> logger, IMemoryCache memoryCache, IDigitalSigningAuthContextProtector digitalSigningAuthContextProtector)
{

_logger = logger;
_memoryCache = memoryCache ?? throw new ArgumentNullException(nameof(memoryCache));
_digitalSigningAuthContextProtector = digitalSigningAuthContextProtector;
}
Expand Down Expand Up @@ -109,21 +110,31 @@ protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage
exp = DateTimeOffset.UtcNow.ToUnixTimeSeconds() + 3600,
scope = "signature impersonation"
}));
var jwtsignatur = Base64UrlEncode(SignData($"{jwtheader}.{jwtbody}", rsb_private_base64.Trim()));
var jwt = $"{jwtheader}.{jwtbody}.{jwtsignatur}";
//jwt = "eyJ0eXAiOiJqd3QiLCJhbGciOiJSUzI1NiJ9.eyJpc3MiOiIyMmQ0YWQwNy0xZmZkLTQwOTAtOWY0YS1lY2JmN2M0YWUxM2IiLCJzdWIiOiIwM2VlOWZkNy04NjZhLTRhOWYtODlhYy01YTA1NjM4ODAzYmUiLCJhdWQiOiJhY2NvdW50LWQuZG9jdXNpZ24uY29tIiwiaWF0IjoxNjg0MjM5MzkwLCJleHAiOjE2ODUyMzkzOTAsInNjb3BlIjoic2lnbmF0dXJlIGltcGVyc29uYXRpb24ifQ.hH1ZNQURNwgqaE6h5R5DxMXbBLwsy6G4PwRNAKeHuaXe_8-UkW9EBRK8sacHP31rV-_Hpf_VrqrFpfD4vc1JmOeTYeWzfjqxBBsGQ30veXmdUMYEE458xG25D0o1xQNbTj1bTM0hkV4CNWct2iyWJsXHl0emQdVsd5ktg_qcyN8Hjw93l8mIM4as-8jebENZp0B0SQrKKUrijsjjkbI4I0KpLkjpFfnEfSF2kJ2TjVk0c3-CHNP1wkVYiCsgw-KebdU0b0DJ3Ax3HFhoirGCpkjnF_LYJ0w9sHTFt36tRiIj3L-NOBZtkYOb2iSR7u9zeMOwBaqB1A7-z7UorsfiMQ";
try
{
var jwtsignatur = Base64UrlEncode(SignData($"{jwtheader}.{jwtbody}", rsb_private_base64.Trim()));
var jwt = $"{jwtheader}.{jwtbody}.{jwtsignatur}";
//jwt = "eyJ0eXAiOiJqd3QiLCJhbGciOiJSUzI1NiJ9.eyJpc3MiOiIyMmQ0YWQwNy0xZmZkLTQwOTAtOWY0YS1lY2JmN2M0YWUxM2IiLCJzdWIiOiIwM2VlOWZkNy04NjZhLTRhOWYtODlhYy01YTA1NjM4ODAzYmUiLCJhdWQiOiJhY2NvdW50LWQuZG9jdXNpZ24uY29tIiwiaWF0IjoxNjg0MjM5MzkwLCJleHAiOjE2ODUyMzkzOTAsInNjb3BlIjoic2lnbmF0dXJlIGltcGVyc29uYXRpb24ifQ.hH1ZNQURNwgqaE6h5R5DxMXbBLwsy6G4PwRNAKeHuaXe_8-UkW9EBRK8sacHP31rV-_Hpf_VrqrFpfD4vc1JmOeTYeWzfjqxBBsGQ30veXmdUMYEE458xG25D0o1xQNbTj1bTM0hkV4CNWct2iyWJsXHl0emQdVsd5ktg_qcyN8Hjw93l8mIM4as-8jebENZp0B0SQrKKUrijsjjkbI4I0KpLkjpFfnEfSF2kJ2TjVk0c3-CHNP1wkVYiCsgw-KebdU0b0DJ3Ax3HFhoirGCpkjnF_LYJ0w9sHTFt36tRiIj3L-NOBZtkYOb2iSR7u9zeMOwBaqB1A7-z7UorsfiMQ";

var http = new HttpClient();
var http = new HttpClient();

var rsp = await http.PostAsync($"{authContext.BaseUrl}/oauth/token", new FormUrlEncodedContent(new Dictionary<string, string>
{
["assertion"] = jwt,
["grant_type"] = "urn:ietf:params:oauth:grant-type:jwt-bearer"
}));
var rsp = await http.PostAsync($"{authContext.BaseUrl}/oauth/token", new FormUrlEncodedContent(new Dictionary<string, string>
{
["assertion"] = jwt,
["grant_type"] = "urn:ietf:params:oauth:grant-type:jwt-bearer"
}));

var tokenresponse = await rsp.Content.ReadAsStringAsync();
var tokenresponse = await rsp.Content.ReadAsStringAsync();

return JToken.Parse(tokenresponse).SelectToken("$.access_token")?.ToString();
}
catch(FormatException format)
{
_logger.LogError("Failed to sign using invalid formated base64 data: " + rsb_private_base64.Trim());
throw;
}

return JToken.Parse(tokenresponse).SelectToken("$.access_token")?.ToString();

});
request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", resttoken);
}
Expand Down

0 comments on commit c5de388

Please sign in to comment.