Thanks! Appreciate that. This will work until the content fills the screen and then scrolling never enables.
I think we need to find the place where the minimum height of the main content view is calculated and adjust that to be a few lines shorter.
(I.e. i don't think a generic fix is possible - it will have to be an adjustment which is tweaked specifically to the height of your footer.)
Thanks
Hi,
Simple question...We have added an extra line to the footer in MainFooterComponent.razor which gets configured into the Lepton theme with:
options.FooterComponent = typeof(MainFooterComponent);
However, the extra line causes the layout to be bigger and enables scrolling on the main view by 1 line to see the extra line of the footer.
i.e A footer with one line of text, no scrolling. With two lines of text, there is scrolling. Would it be possible to advise how to adjust the layout and sizing so that the view does not scroll when 2 lines of text in the footer?
Thanks
Thanks, this helped, but in the end, in the end the answer came from reimplementing the ExternalLoginProviderBase and LdapManager classes in the source. Thanks
Hi,
We are trying to setup LDAP authentication for our app and have based it mostly on the information here: https://support.abp.io/QA/Questions/715/LDAP-Setup-documentation
We have replaced the LdapExternalLoginProvider and overriden the NormalizeUserName() function to set the username as required. In our case this is actually of the format as follows: user@my.domain.com
We now seem to get past the initial authentication, but then run into an error when ABP tries to do additional directory look ups - we think when doing the mapping to user roles. Do you have any advice about how to overcome this?
Our goal is to be able to map user roles to certain user groups in LDAP - would it be possible to point to some documentation about how this all works within ABP so we can understand how to set it up. Does anyone perhaps have a suggestion or sample configuration?
20:19:00,182 INFO Microsoft.AspNetCore.Routing.EndpointMiddleware - Executed endpoint '/Account/Login'
20:19:00,190 ERROR Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware - An unhandled exception has occurred while executing the request.
LdapForNet.LdapOperationsErrorException: Operations error. 000004DC: LdapErr: DSID-0C090A7D, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, v3839. R
esult: 1. Method: ldap_parse_result. Details: ErrorMessage: 000004DC: LdapErr: DSID-0C090A7D, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, v3839
at LdapForNet.Native.LdapNative.ThrowIfError(SafeHandle ld, Int32 res, String method, IDictionary`2 details)
at LdapForNet.LdapConnection.ThrowIfResponseError(DirectoryResponse response)
at LdapForNet.LdapConnection.SendRequestAsync(DirectoryRequest directoryRequest, CancellationToken token)
at LdapForNet.LdapConnection.SearchAsync(String base, String filter, String[] attributes, LdapSearchScope scope, CancellationToken token)
at Volo.Abp.Account.Public.Web.Ldap.OpenLdapManager.GetUserEmailAsync(String userName)
at Volo.Abp.Account.Public.Web.Ldap.LdapExternalLoginProvider.GetUserInfoAsync(String userName)
at Volo.Abp.Identity.ExternalLoginProviderBase.CreateUserAsync(String userName, String providerName)
at Volo.Abp.Identity.AspNetCore.AbpSignInManager.PasswordSignInAsync(String userName, String password, Boolean isPersistent, Boolean lockoutOnFailure)
at Volo.Abp.Account.Web.Pages.Account.IdentityServerSupportedLoginModel.OnPostAsync(String action)
at Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.ExecutorFactory.GenericTaskHandlerMethod.Convert[T](Object taskAsObject)
at Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.ExecutorFactory.GenericTaskHandlerMethod.Execute(Object receiver, Object[] arguments)
at Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.PageActionInvoker.InvokeHandlerMethodAsync()
at Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.PageActionInvoker.InvokeNextPageFilterAsync()
at Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.PageActionInvoker.Rethrow(PageHandlerExecutedContext context)
at Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.PageActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.PageActionInvoker.InvokeInnerFilterAsync()
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextExceptionFilterAsync>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ExceptionContextSealed context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|24_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|19_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
at Volo.Abp.AspNetCore.Auditing.AbpAuditingMiddleware.InvokeAsync(HttpContext context, RequestDelegate next)
at Volo.Abp.AspNetCore.Auditing.AbpAuditingMiddleware.InvokeAsync(HttpContext context, RequestDelegate next)
at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass6_1.<<UseMiddlewareInterface>b__1>d.MoveNext()
--- End of stack trace from previous location ---
at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
at IdentityServer4.Hosting.IdentityServerMiddleware.Invoke(HttpContext context, IEndpointRouter router, IUserSession session, IEventService events, IBackChannelLogoutService backChannelLogoutService)
at IdentityServer4.Hosting.MutualTlsEndpointMiddleware.Invoke(HttpContext context, IAuthenticationSchemeProvider schemes)
at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
at IdentityServer4.Hosting.BaseUrlMiddleware.Invoke(HttpContext context)
at Volo.Abp.AspNetCore.MultiTenancy.MultiTenancyMiddleware.InvokeAsync(HttpContext context, RequestDelegate next)
at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass6_1.<<UseMiddlewareInterface>b__1>d.MoveNext()
--- End of stack trace from previous location ---
at Microsoft.AspNetCore.Builder.ApplicationBuilderAbpJwtTokenMiddlewareExtension.<>c__DisplayClass0_0.<<UseJwtTokenMiddleware>b__0>d.MoveNext()
--- End of stack trace from previous location ---
at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Builder.Extensions.MapWhenMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.<Invoke>g__Awaited|6_0(ExceptionHandlerMiddleware middleware, HttpContext context, Task task)
20:19:00,194 INFO Microsoft.AspNetCore.Cors.Infrastructure.CorsService - CORS policy execution successful.
20:19:00,195 INFO Microsoft.AspNetCore.Cors.Infrastructure.CorsMiddleware - No CORS policy found for the specified request.
At first glance, the log looks like it is due to invalid credentials, however this not due to the login screen user name and password beign incorrect. If we enter invalid credentials at the login screen, the UI reports "Invalid username or password" as expected.
Thanks for any help!
Thank you.
Is there perhaps any documentation on how to use that? The documentation here only seems to show what it does as a standalone module.
Is there a way for a user to upload a file and then use that file within the rest of the application?
Does anyone know if there is a way to list all files stored in an IBlobContainer?
We resolved this. Some of the URL are derrived from the incoming requests and our reverse proxy was changing these.
We had to config the app to use forward headers as in here: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/proxy-load-balancer?view=aspnetcore-5.0
and then update the nginx configuration as below:
server {
server_name sub.example.com;
underscores_in_headers on;
location / {
rewrite /(.*) /$1 break;
proxy_pass http://10.216.2.11:8083;
proxy_redirect off;
proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $server_name;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/sub.example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/sub.example.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}server {
if ($host = sub.example.com {
return 301 https://$host$request_uri;
} # managed by Certbot
server_name sub.example.com;
listen 80;
return 404; # managed by Certbot
}
Good morning,
We have a release/Production build of a single ABP host application serving an API with SWAGGER UI and the IdentiyServer for authentication. The same server also serves the static files for a Blazor webassembly app.
It is deployed in a reverse proxy configuration with the proxy server handling connection security (HTTPS).
Our problem is that both the swagger and blazor UI seem to use an "http" based URL instead of "https" for the authorisation redirection. This causes some warnings in the browser consoles.
Blocked loading mixed active content "http://sub.example.com/connect/authorize?client_id=SubExample_Blazor&redirect_uri=https%3A%2F%2Fsub.example.com%2Fauthentication%2Flogin-callback&response_type=code&scope=openid%20profile%20SubExample%20role%20email%20phone&state=8d1584af720e4beaad8301d6f2c183e5&code_challenge=_bzU0sB2LJE6DYHBV4rUFZEurI6LZUjF6rtjoigPGWE&code_challenge_method=S256&prompt=none&response_mode=query"
We haved edit in SubExample as the app name and sub.example.com as the domain.
In the swagger UI, the authorisation seems to go through, but then testing the API calls fail. The Blazor UI gets through login as well, but presents an error when returning to the Blazor UI and then goes into a very odd "half" logged in state where the user is not logged in, but the menus and pages are accessable (although the API requests for data seem to fail).
Our hosting configruation is an Nginx server which handles the HTTPS and then forwards on the plain http requests to the application hosted in a docker container (i.e using the kestrel server). i.e. The Kestrel application is not configured to handle any TLS things and the identity server is using the same tempkey.jwt and tempkey.rsa files as for development ( I think)
With the all the confiugrations set to http://localhost, everything works when accessed locally.
We only run int othe problem when we chagne the configurations for our public domain, (as shown below) and then access via the public domain.
"App": {
"SelfUrl": "https://sub.example.com", // Of the resouce server (API)
"ClientUrl": "http://localhost:4200", // For anglular app, not used
"CorsOrigins": "https://*.example.com, http://localhost:8080"
},
"AuthServer": {
"Authority": "https://sub.example.com", // Of the Authorisation server (IdentityServer)
"RequireHttpsMetadata": "false"
},
"IdentityServer": {
"Clients": {
"SubExample_Web":
{
"ClientId": "SubExample_Web",
"RootUrl": "https://sub.example.com"
},
"SubExample_App":
{
"ClientId": "SubExample_App",
"RootUrl": "http://localhost:4200" // for angular app, not used
},
"SubExample_Blazor":
{
"ClientId": "SubExample_Blazor",
"RootUrl": "https://sub.example.com"
},
"SubExample_Swagger":
{
"ClientId": "SubExample_Swagger",
"ClientSecret": "1q2w3e*",
"RootUrl": "https://sub.example.com"
}
}
}
Would it be possible to have any advice as to how to fix this to make our authentication work?
Thanks Mark
UPDATE:
We have noticed that the identity server is reporting the incorrect URLs. In the image below we are accessing with https, but http is reported:
We have checked the entire code base, nowhere do we use the url in a setting without the "s". We have also erased and recreated the database.
Hi, On the latest ABP ( I ran dotnet tool update -g Volo.Abp.Cli && abp suite update).
We are getting build errors because of a missing package:
Error NU1102 Unable to find package Blazorise with version (>= 0.9.3-preview6)
From manually searching, it appears 0.9.3-preview6 is not available on NuGet yet.