public class SaasGraphClientCredentialsProvider()

in src/Saas.Lib/Saas.Identity/Provider/SaasGraphClientCredentialsProvider.cs [9:38]


public class SaasGraphClientCredentialsProvider<TOptions>(
    SaasApiAuthenticationProvider<ISaasMicrosoftGraphApi, TOptions> authProvider,
    ILogger<SaasGraphClientCredentialsProvider<TOptions>> logger) : IAuthenticationProvider
    where TOptions : AzureAdB2CBase
{
    private readonly ILogger _logger = logger;
    private readonly SaasApiAuthenticationProvider<ISaasMicrosoftGraphApi, TOptions> _authProvider = authProvider;

    // https://learn.microsoft.com/en-us/aspnet/core/fundamentals/logging/loggermessage?view=aspnetcore-8.0
    private static readonly Action<ILogger, Exception> _logError = LoggerMessage.Define(
            LogLevel.Error,
            new EventId(1, nameof(SaasGraphClientCredentialsProvider<TOptions>)),
            "Client Assertion Signing Provider");

    public async Task AuthenticateRequestAsync(
        RequestInformation request, 
        Dictionary<string, object>? additionalAuthenticationContext = null, 
        CancellationToken cancellationToken = default)
    {
        try
        {
            request.Headers.Add("Authorization", $"bearer { await _authProvider.GetAccessTokenAsync() }");
        }
        catch (Exception ex)
        {
            _logError(_logger, ex);
            throw;
        }
    }
}