Hi, I have followed the examples; however there are none for ng tiered, so I have been trying to combine code from the MVC tiered and angular, but nothing has resolved the issue thus far.
I can log in as the host admin, but doing so signs me into the host account instead of the tenant account. I also noticed that when I first visit the tenant subdomain, abpSession in local storage contains tenant-related data, but this data is lost once I navigate to the authentication server. Additionally, I set breakpoints in my login component and found that ICurrentTenant is null.
Any ideas on what might be causing this issue?
AuthServerModule
public override void PreConfigureServices(ServiceConfigurationContext context)
{
var hostingEnvironment = context.Services.GetHostingEnvironment();
var configuration = context.Services.GetConfiguration();
PreConfigure<OpenIddictBuilder>(builder =>
{
builder.AddValidation(options =>
{
options.AddAudiences("Bookstore");
options.UseLocalServer();
options.UseAspNetCore();
});
});
if (!hostingEnvironment.IsDevelopment())
{
PreConfigure<AbpOpenIddictAspNetCoreOptions>(options =>
{
options.AddDevelopmentEncryptionAndSigningCertificate = false;
});
PreConfigure<OpenIddictServerBuilder>(serverBuilder =>
{
serverBuilder.AddProductionEncryptionAndSigningCertificate("openiddict.pfx", configuration["AuthServer:CertificatePassPhrase"]!);
serverBuilder.SetIssuer(new Uri(configuration["AuthServer:Authority"]!));
});
}
PreConfigure<AbpOpenIddictWildcardDomainOptions>(options =>
{
options.EnableWildcardDomainSupport = true;
options.WildcardDomainsFormat.Add(configuration["WildcardDomains:API"]);
options.WildcardDomainsFormat.Add(configuration["WildcardDomains:Angular"]!);
options.WildcardDomainsFormat.Add(configuration["WildcardDomains:AuthServer"]);
});
}
public override void ConfigureServices(ServiceConfigurationContext context)
{
var hostingEnvironment = context.Services.GetHostingEnvironment();
var configuration = context.Services.GetConfiguration();
Configure<AbpTenantResolveOptions>(options =>
{
options.AddDomainTenantResolver(configuration["WildcardDomains:AuthServer"]!);
options.AddDomainTenantResolver(configuration["WildcardDomains:API"]!);
options.AddDomainTenantResolver(configuration["WildcardDomains:Angular"]!);
});
Configure<OpenIddictServerOptions>(options =>
{
options.TokenValidationParameters.IssuerValidator = TokenWildcardIssuerValidator.IssuerValidator;
options.TokenValidationParameters.ValidIssuers = new[] { $"{configuration["WildcardDomains:AuthServer"]}/", $"{configuration["App:SelfUrl"]}/" };
});
HttpApiHostModule
private void ConfigureAuthentication(ServiceConfigurationContext context, IConfiguration configuration)
{
context.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.Authority = configuration["AuthServer:Authority"] + "/" ;
options.RequireHttpsMetadata = configuration.GetValue<bool>("AuthServer:RequireHttpsMetadata");
options.Audience = "Bookstore";
});
Configure<AbpTenantResolveOptions>(options =>
{
options.AddDomainTenantResolver(configuration["WildcardDomains:AuthServer"]);
options.AddDomainTenantResolver(configuration["WildcardDomains:Angular"]);
options.AddDomainTenantResolver(configuration["WildcardDomains:API"]);
});
context.Services.Configure<AbpClaimsPrincipalFactoryOptions>(options =>
{
options.IsDynamicClaimsEnabled = true;
});
}