Hi,
no, I'm not able to apply this as I'm not using ClientId and ClientSecret in my application anywhere
Are you sure about that? There should be clientId and clientSecret in your code, to define the OIDC client so you can login through your auth-server. Please search it through your application. (ClientId is typically probably is your application name, and clientSecret can be
1q2w3E*if you haven't changed it but, you should check your HttpApiHost project orDbMigratorproject's appsettings.json file)we are using external login; can I use that ClientId and ClientSecret ?
yes, if you are login through an external login provider, then you should pass that.
Hi, it seems your configuration is correct. But there are some things that we should double-check:
1-) In your *BlazorClient.csproj file there should be a section as below:
<ItemGroup>
<EmbeddedResource Include="Localization\Resources\Test\*.json" />
<Content Remove="Localization\Resources\Test\*.json" />
</ItemGroup>
This will make all of your .json files under the localization directory as embedded-resources.
2-) Also, check that Microsoft.Extensions.FileProviders.Embedded is added in csproj file and there is <GenerateEmbeddedFilesManifest>true</GenerateEmbeddedFilesManifest> line in a property group:
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="9.0.0" />
</ItemGroup>
<PropertyGroup>
<GenerateEmbeddedFilesManifest>true</GenerateEmbeddedFilesManifest>
</PropertyGroup>
After these configurations, it should work as expected. Please let me know about the result. Regards.
Ref: https://abp.io/docs/latest/framework/infrastructure/virtual-file-system#embedding-the-files
Hi,
Why are you guys locking out the post so early. You should keep it at aleast 2 weeks. I was out fo station so couldn't find a chance to look at it.
Actually, we have a support-bot that closes and locks questions within a specific timeline. Sorry, if it caused any inconvenience.
I want to understand where exactly i need to put this as I don't see any .suite folder in my angular app directory. Please provide clear screenshots and let me know
When you generate CRUD pages, ABP Suite creates a .suite folder in your project directory with entity metadata information (in multiple .JSON files) and stores other information, so you can regenerate entities later on.
So, you can open your project directory and should be able to see the .suite folder in your project. Then replace the folder with the one in the drive file.
Hi, ABP doesn't provide a built-in charting component for Razor pages like it does for Angular (e.g., with ApexCharts), but you're free to integrate any JavaScript charting library into your Razor views.
For example, we are using chart.js in our SaaS Module and you can use our own NPM package (@abp/chart.js) and then use the related chart component by following the chart.js's documentation and guides: https://www.chartjs.org/
Hi,
no, I'm not able to apply this as I'm not using ClientId and ClientSecret in my application anywhere
Are you sure about that? There should be clientId and clientSecret in your code, to define the OIDC client so you can login through your auth-server. Please search it through your application. (ClientId is typically probably is your application name, and clientSecret can be 1q2w3E* if you haven't changed it but, you should check your HttpApiHost project or DbMigrator project's appsettings.json file)
Hi, first of all, thanks for sharing all the details. It seems the AuthServer issues a token correctly with:
"iss": "https://domain.com/authserver"
But, the consuming service (AdministrationService) throws:
SecurityTokenInvalidIssuerException: IDX10204: Unable to validate issuer.
This probably happens because the token validation parameters in your consuming services do not include "https://domain.com/authserver" as a valid issuer.
So, to fix this problem, in your AdministrationService, make sure your JWT Bearer configuration includes the issuer:
context.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddAbpJwtBearer(options =>
{
options.Authority = configuration["AuthServer:Authority"];
options.MetadataAddress = configuration["AuthServer:MetaAddress"]!.EnsureEndsWith('/') + ".well-known/openid-configuration";
options.RequireHttpsMetadata = configuration.GetValue<bool>(configuration["AuthServer:RequireHttpsMetadata"]);
options.Audience = configuration["AuthServer:Audience"];
//issuer configuration
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true, //or set it as false, if you don't want to validate the issuer
ValidIssuer = "https://domain.com/authserver", // Match exactly
// Or use ValidIssuers = new[] { "https://domain.com/authserver" }
};
});
Note: Make sure this is consistent across all services that consume the tokens. (not just for administration service)
Also, please ensure you are calling app.UseForwardedHeaders(); before the routing, authentication and authorization middlewares!
Hi, by any chance, can you please share the test results via email (to support@abp.io and specify the ticket number, please)?
This way, we can directly get the test results and evaluate them.
Hi,
I've done some more tests, I've narrowed the issue down to the theme. We're using the Lepton theme, not LeptonX.
Okay, then this clarifies the situation. I've checked with LeptonX Theme, this is the reason why I was unable to reproduce.
The js for adding the unread message count badge would appear to rely on an element with id "lpx-toolbar". In lepton the equivalent element id is "navbarToolbar".
I'll check that but it seems in the Chat Module, there is a theme-specific selector used, and it should not be used normally. Thanks for pointing that out.
This is obviously a bit of a hack but not sure there's an alternative, if you can suggest a better fix please let me know.
Actually, since there are some selectors that are theme-specific we should update them. In the meantime, your solution can be a workaround. I'll create an internal issue for that.
Regards.
Also, I would like to ask you. will this works for Dynamic proxy also?
ABP dynamic proxying alone won’t work across microservices out of the box.
However, I find that there is a difference between our approach. I am using the intergrated UI option that appears when creating new solution.
Actually, this should not make any difference. Are you still unable to generate static proxies?
Hi, when you open a page of a Blazor Web App in a new browser tab, the browser indeed initiates a full page load, which is the default and the expected behavior. So, you cannot prevent a browser from reloading a fresh copy of the app when a page is opened in a new tab — that’s standard browser behavior.
You may want to consider Pre-rendering and Caching Techniques of Blazor. Please refer to Blazor's documentation for these: https://learn.microsoft.com/en-us/aspnet/core/blazor/fundamentals/routing?view=aspnetcore-9.0