- ABP Framework version: v7.2.2
- UI type: Angular
- DB provider: EF Core
- Tiered (MVC) or Identity Server Separated (Angular): Identity server separated
Hi,
I'd like to know if there is a guide to replace the Ocelot gateway to the Azure API Management.
I am having an issue regarding the routing for the APIs. When we log in, and the system tries to get the required permissions, roles, etc. It throws an error because the routing tries to get the data only fromthe apis like: "api/identity/..." after default endpoint (authserver.com/...), but for Azure API Management we need to configure a suffix for all the APIs, ex. For IdentityService the right URL is "https://apim_route/identityservice/api/identity/..." and the suffix configured is "identityservice", but when we do a request it does the following: "https://apim_route/api/identity/...".
We tried to modify the API routes following the same pattern for new services and checking the JSON for APIs configuration mentioned here in the environment file in this way :
import { Environment } from '@abp/ng.core';
const baseUrl = 'https://flyguys-spa-dev-cus.azurewebsites.net';
const oAuthConfig = {
issuer: 'https://flyguys-authserver-dev-cus.azurewebsites.net/',
clientId: 'Angular',
scope:
'offline_access openid profile email phone AccountService IdentityService AdministrationService SaasService ProductService CoreService FileManagementService',
requireHttps: true
};
export const environment = {
production: false,
application: {
baseUrl,
name: 'Flyguys',
},
oAuthConfig,
apis: {
default: {
url: 'https://flyguys-apim-dev-eus.azure-api.net',
rootNamespace: 'NVC.Flyguys',
},
AbpAccountPublic: {
url: oAuthConfig.issuer,
rootNamespace: 'AbpAccountPublic',
},
ProductService: {
url: 'https://flyguys-apim-dev-eus.azure-api.net/productservice',
rootNamespace: 'NVC.Flyguys.ProductService'
},
AbpIdentity: {
url: 'https://flyguys-apim-dev-eus.azure-api.net/identityservice',
rootNamespace: 'AbpIdentity'
},
AbpAuditLogging: {
url: 'https://flyguys-apim-dev-eus.azure-api.net/administrationservice',
rootNamespace: 'AbpAuditLogging'
},
TextTemplateManagement: {
url: "https://flyguys-apim-dev-eus.azure-api.net/administrationservice",
rootNamespace: 'TextTemplateManagement'
},
LanguageManagement: {
url: 'https://flyguys-apim-dev-eus.azure-api.net/administrationservice',
rootNamespace: 'LanguageManagement'
},
AbpPermissionManagement: {
url: 'https://flyguys-apim-dev-eus.azure-api.net/administrationservice',
rootNamespace: 'AbpPermissionManagement'
},
SettingManagement: {
url: 'https://flyguys-apim-dev-eus.azure-api.net/administrationservice',
rootNamespace: 'SettingManagement'
},
AbpAccountAdmin: {
url: 'https://flyguys-apim-dev-eus.azure-api.net/identityservice',
rootNamespace: 'AbpAccountAdmin'
},
AbpPaymentCommon: {
url: 'https://flyguys-apim-dev-eus.azure-api.net/saasservice',
rootNamespace: 'AbpPaymentCommon'
},
SaasHost: {
url: 'https://flyguys-apim-dev-eus.azure-api.net/saasservice',
rootNamespace: 'SaasHost'
},
AbpFeatureManagement: {
url: 'https://flyguys-apim-dev-eus.azure-api.net/saasservice',
rootNamespace: 'AbpFeatureManagement'
},
CoreService: {
url: 'https://flyguys-apim-dev-eus.azure-api.net/coreservice',
rootNamespace: 'NVC.Flyguys.CoreService'
},
FileManagement: {
url: 'https://flyguys-apim-dev-eus.azure-api.net/mediastorageservice',
rootNamespace: 'NVC.Flyguys.FileManagementService'
}
},
} as Environment;
Could you help us with this approach, please?
3 Answer(s)
-
0
apis: { default: { url: 'https://flyguys-apim-dev-eus.azure-api.net', // Should be the API gateway rootNamespace: 'NVC.Flyguys', },
The default api should be the gateway. Others used for generating the static proxies. Try these steps:
- Check if the static proxies are generated correctly.
- Follow the request log to the gateway if the gateway receives the request.
- If the gateway receives the request but can not find the downstream; you should configure the downstreams with the suffix as how it can find.
- If the gateway doesn't receive the request, check the default route and the static proxy generation again.
-
0
We are using our gateway, in this case Azure API Management. We configured it with all services and we want to use it as Gateway.
we have some questions:
- What do you mean with the comment "// Should be the API gateway"? should it be the project with ocelot?
- Could you be more specific with the steps? (how can we do it, the steps for do it, etc.)
- Our idea is remove ocelot, can we replace for our API Management configuration?
Thanks in advance
-
0
I am not familiar with Azure API Management, however you need to use a gateway instead of ocelot in your case. I don't exactly know which product Azure provides for this functionality; not even sure if it provides even.
- It should be the gateway you have deployed with a valid DNS on a server, doesn't matter ocelot, krakend, envoy or related Azure API product.
- When you make a request from your web application, check the logs of the gateway if it receives it.
- Yes you can replace ocelot. I don't know about Azure API Management, you will need to check for other samples related to that.