Starts in:
1 DAY
20 HRS
56 MIN
50 SEC
Starts in:
1 D
20 H
56 M
50 S
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


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

    Hi,

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

Made with ❤️ on ABP v9.1.0-preview. Updated on November 20, 2024, 13:06