private TokenCredential CreateTokenCredential(AuditClientMicrosoftIdentityClientOptions optionsValue) { return(new ChainedTokenCredential( new ManagedIdentityCredential(optionsValue.ClientId), new ClientSecretCredential(optionsValue.TenantId, optionsValue.ClientId, optionsValue.ClientSecret) )); }
public static IServiceCollection AddAuditClientAzureIdentity(this IServiceCollection services, IConfigurationSection section) { Guard.NotNull(services, nameof(services)); var auditClientAzureIdentityOptions = new AuditClientMicrosoftIdentityClientOptions(); section.Bind(auditClientAzureIdentityOptions); return(services.AddAuditClientAzureIdentity(auditClientAzureIdentityOptions)); }
public static IServiceCollection AddAuditClientAzureIdentity(this IServiceCollection services, Action <AuditClientMicrosoftIdentityClientOptions> configureAction) { Guard.NotNull(services, nameof(services)); Guard.NotNull(configureAction, nameof(configureAction)); var options = new AuditClientMicrosoftIdentityClientOptions(); configureAction(options); return(services.AddAuditClientAzureIdentity(options)); }
public AuditClientAzureIdentity( ILogger <AuditClientAzureIdentity> logger, IOptions <AuditClientMicrosoftIdentityClientOptions> options, // IHttpClientFactory factory, HttpClient client) { _logger = logger; _options = options.Value; // _clientFactory = factory; _client = client; }
private static IServiceCollection AddAuditClientAzureIdentity(this IServiceCollection services, AuditClientMicrosoftIdentityClientOptions options) { if (string.IsNullOrEmpty(options.HttpClientName)) { options.HttpClientName = AuditClientAzureIdentityConstants.Name; } services //.AddSingleton(ConfidentialClientApplicationBuilder // .Create(options.ClientId) // .WithClientSecret(options.ClientSecret) // .WithAuthority($"https://login.microsoftonline.com/{options.TenantId}/") // .Build() //) .AddTransient <AuthenticationHttpMessageHandler>() .AddHttpClient <IAuditClientAzureIdentity, AuditClientAzureIdentity>(options.HttpClientName, httpClient => { httpClient.BaseAddress = options.BaseAddress; }) .AddHttpMessageHandler <AuthenticationHttpMessageHandler>() .AddPolicyHandler((serviceProvider, request) => AuditClientPolicies.RetryPolicy(serviceProvider)); //.AddPolicyHandler((serviceProvider, request) => //HttpPolicyExtensions.HandleTransientHttpError() // .WaitAndRetryAsync(3, // sleepDurationProvider: retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)), // onRetry: (outcome, timespan, retryAttempt, context) => // { // serviceProvider.GetService<ILogger<AuditClientAzureIdentity>>() // .LogWarning("Delaying for {delay}ms, then making retry {retry}.", timespan.TotalMilliseconds, retryAttempt); // } // )); services.AddHttpClient("google", httpClient => { httpClient.BaseAddress = new Uri("https://www.google.com"); }); services.AddSingleton(Options.Options.Create(options)); services.AddSingleton <IAccessTokenService, AccessTokenService>(); //services.AddSingleton<IAuditClientAzureIdentity, AuditClientAzureIdentity>(); services.AddMemoryCache(); return(services); }