Open Closed

Issue with DomainTenantResolver and constant string in subdomain #5255


User avatar
0
devpayoff created

Check the docs before asking a question: https://docs.abp.io/en/commercial/latest/ Check the samples, to see the basic tasks: https://docs.abp.io/en/commercial/latest/samples/index The exact solution to your question may have been answered before, please use the search on the homepage.

If you're creating a bug/problem report, please include followings:

  • ABP Framework version: v7.2.2
  • UI type: Angular
  • DB provider: EF Core
  • Tiered (MVC) or Identity Server Separated (Angular): yes

We're using ABP DomainTenantResolver to differentiate tenants from url, BUT we're not happy with the "dedicated subdomain for tenant" constraint. Our desired pattern for tenant resolution is: For API "{0}api.mydomain.com" For Angular: "{0}web.mydomain.com" The reason for that is commercial (we have a wildcard SSL certificate for *.mydomain.com and we need to open a lot of tenants using the same certificate).

ServerSide this pattern seems to be working: just adding options.AddDomainTenantResolver("{0}api.mydomain.com"); and setting https://{0}web.mydomain.com in DB IdentityServerClientRedirectUris table the resolver resolves NULL for "api.mydomain.com" and "hello" for "helloapi.mydomain.com"

ClientSide also works when using a tenant: browsing "helloweb.mydomain.com" the angular app shows up and calls correct APIs https://helloapi.mydomain.com/api/abp/multi-tenancy/tenants/by-name/hello https://helloapi.mydomain.com/.well-known/openid-configuration https://helloapi.mydomain.com/api/abp/application-configuration

BUT when using no tenant browsing "web.mydomain.com" the angular app calls bad URIs: https://%7B0%7Dapi.mydomain.com/.well-known/openid-configuration https://%7B0%7Dapi.mydomain.com/api/abp/application-configuration

The file environment.ts is:

import { Environment } from '@abp/ng.core'; const baseUrl = 'https://{0}app.mydomain.com'; export const environment = { production: false, application: { baseUrl, name: 'BookStore', logoUrl: '', }, oAuthConfig: { issuer: 'https://{0}api.mydomain.com', redirectUri: baseUrl, clientId: 'BookStore_App', skipIssuerCheck: true, responseType: 'code', scope: 'offline_access openid profile role email phone BookStore', }, apis: { default: { url: 'https://{0}api.mydomain.com', rootNamespace: 'BookStore', }, }, } as Environment;

How can we fix this behavior? Thank you

Markdown supported.
Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post)

1 Answer(s)
  • User Avatar
    0
    liangshiwei created
    Fullstack Developer

    Hi,

    We have an example may can help you: https://github.com/abpframework/abp-samples/tree/master/DomainTenantResolver/OpenIddict/NG

    Markdown supported.
    Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post)
Boost Your Development
ABP Live Training
Packages
See Trainings
Mastering ABP Framework Book
The Official Guide
Mastering
ABP Framework
Learn More
Mastering ABP Framework Book
Made with ❤️ on ABP v10.8.0-preview. Updated on September 16, 2026, 14:50
1
ABP Assistant
🔐 You need to be logged in to use the chatbot. Please log in first.