53 lines
2.4 KiB
C#
53 lines
2.4 KiB
C#
using Azure.Identity;
|
|
using Core.Cerberos.Adapters.Common.Constants;
|
|
using Microsoft.AspNetCore.Builder;
|
|
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Extensions.Configuration.AzureAppConfiguration;
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
namespace Core.Cerberos.Adapters.Helpers
|
|
{
|
|
public static class AuthHelper
|
|
{
|
|
private static readonly ILogger logger = LoggerFactory.Create(builder =>
|
|
{
|
|
builder.AddConsole();
|
|
}).CreateLogger("AuthHelper");
|
|
|
|
|
|
public static AuthSettings GetAuthSettings(WebApplicationBuilder builder, string appConfigLabel)
|
|
{
|
|
builder.Configuration.AddAzureAppConfiguration(options =>
|
|
{
|
|
var endpoint = builder.Configuration.GetSection("Endpoints:AppConfigurationURI").Value;
|
|
|
|
if (string.IsNullOrEmpty(endpoint))
|
|
throw new ArgumentException("The app configuration is missing");
|
|
|
|
options.Connect(new Uri(endpoint), new DefaultAzureCredential())
|
|
.Select(KeyFilter.Any, "cerberos_common")
|
|
.Select(KeyFilter.Any, appConfigLabel);
|
|
|
|
options.ConfigureKeyVault(keyVaultOptions =>
|
|
{
|
|
keyVaultOptions.SetCredential(new DefaultAzureCredential());
|
|
});
|
|
});
|
|
|
|
return new AuthSettings
|
|
{
|
|
AzureADInstance = builder.Configuration.GetSection(Secrets.AzureADInstance).Value,
|
|
AzureADTenantId = builder.Configuration.GetSection(Secrets.AzureADTenantId).Value,
|
|
AzureADClientId = builder.Configuration.GetSection(Secrets.AzureADClientId).Value,
|
|
AzureADClientSecret = builder.Configuration.GetSection(Secrets.AzureADClientSecret).Value,
|
|
HeathCerberosAppAuthorizationUrl = builder.Configuration.GetSection(Secrets.HeathCerberosAppAuthorizationUrl).Value,
|
|
HeathCerberosAppTokenUrl = builder.Configuration.GetSection(Secrets.HeathCerberosAppTokenUrl).Value,
|
|
HeathCerberosAppClientId = builder.Configuration.GetSection(Secrets.HeathCerberosAppClientId).Value,
|
|
HeathCerberosAppScope = builder.Configuration.GetSection(Secrets.HeathCerberosAppScope).Value,
|
|
PrivateKey = builder.Configuration.GetSection(Secrets.PrivateKey).Value,
|
|
PublicKey = builder.Configuration.GetSection(Secrets.PublicKey).Value,
|
|
};
|
|
}
|
|
}
|
|
}
|