Hi,
I'm trying to run my project with Docker on my local computer because I want to check if the updates work correctly on a tablet before pushing the code to production.
The all containers up correctly, migrations, and I can access, https://pc01:44353/, but I can't login, because I get the error 500
And this is the Excception of webapp-web:
2024-07-12 11:18:47.622 +00:00 [ERR] [] [] An unhandled exception has occurred while executing the request.
System.InvalidOperationException: IDX20803: Unable to obtain configuration from: 'http://webapp-authserver/.well-known/openid-configuration'.
---> System.IO.IOException: IDX20807: Unable to retrieve document from: 'http://webapp-authserver/.well-known/openid-configuration'. HttpResponseMessage: 'StatusCode: 400, ReasonPhrase: 'Bad Request', Version: 1.1, Content: System.Net.Http.HttpConnectionResponseContent, Headers:
{
Date: Fri, 12 Jul 2024 11:18:47 GMT
Server: Kestrel
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Content-Length: 168
Content-Type: application/json; charset=UTF-8
}', HttpResponseMessage.Content: '{
"error": "invalid_request",
"error_description": "This server only accepts HTTPS requests.",
"error_uri": "https://documentation.openiddict.com/errors/ID2083"
}'.
at Microsoft.IdentityModel.Protocols.HttpDocumentRetriever.GetDocumentAsync(String address, CancellationToken cancel)
at Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectConfigurationRetriever.GetAsync(String address, IDocumentRetriever retriever, CancellationToken cancel)
at Microsoft.IdentityModel.Protocols.ConfigurationManager1.GetConfigurationAsync(CancellationToken cancel) --- End of inner exception stack trace --- at Microsoft.IdentityModel.Protocols.ConfigurationManager
1.GetConfigurationAsync(CancellationToken cancel)
at Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler.HandleChallengeAsyncInternal(AuthenticationProperties properties)
at Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler.HandleChallengeAsync(AuthenticationProperties properties)
at Microsoft.AspNetCore.Authentication.AuthenticationHandler`1.ChallengeAsync(AuthenticationProperties properties)
at Microsoft.AspNetCore.Authentication.AuthenticationService.ChallengeAsync(HttpContext context, String scheme, AuthenticationProperties properties)
at Microsoft.AspNetCore.Mvc.ChallengeResult.ExecuteResultAsync(ActionContext context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.
Here you can see my docker-compose.yml
services:
webapp-web:
image: cincaporc/webapp-web:latest
container_name: webapp-web
build:
context: ../../
dockerfile: src/Cincaporc.WebApp.Web/Dockerfile.local
environment:
- ASPNETCORE_URLS=https://+:443;http://+:80;
- Kestrel__Certificates__Default__Path=/root/certificate/pc01.pfx
- Kestrel__Certificates__Default__Password=123456
- App__SelfUrl=https://pc01:44353
- AuthServer__RequireHttpsMetadata=false
- AuthServer__IsContainerizedOnLocalhost=true
- AuthServer__MetaAddress=http://webapp-authserver
- AuthServer__Authority=https://pc01:44334
- RemoteServices__Default__BaseUrl=http://webapp-api
- RemoteServices__AbpAccountPublic__BaseUrl=http://webapp-authserver
- App__MVCPublicUrl=https://pc01:44355
- ConnectionStrings__Default=Host=db-server;Database=ExtranetDev;User Id=cincaporclocal;Password=cincaporclocal;Timeout=60;
- Redis__Configuration=redis
ports:
- "44353:443"
depends_on:
- webapp-api
restart: on-failure
volumes:
- ./certs:/root/certificate
networks:
- abp-network
webapp-web-public:
image: cincaporc/webapp-web-public:latest
container_name: webapp-web-public
build:
context: ../../
dockerfile: src/Cincaporc.WebApp.Web.Public/Dockerfile.local
environment:
- ASPNETCORE_URLS=https://+:443;http://+:80;
- Kestrel__Certificates__Default__Path=/root/certificate/pc01.pfx
- Kestrel__Certificates__Default__Password=123456
- App__SelfUrl=https://pc01:44355
- App__Timing__TimeZone=Europe/Madrid
- AuthServer__RequireHttpsMetadata=false
- AuthServer__IsContainerizedOnLocalhost=true
- AuthServer__MetaAddress=http://webapp-authserver
- AuthServer__Authority=https://pc01:44334
- AuthServer__ClientId=WebApp_Web_Public_Tiered
- AuthServer__ClientSecret=g0gMs#4j2r
- RemoteServices__Default__BaseUrl=http://webapp-api
- RemoteServices__AbpAccountPublic__BaseUrl=http://webapp-authserver
- Redis__Configuration=redis
ports:
- "44355:443"
depends_on:
- webapp-api
restart: on-failure
volumes:
- ./certs:/root/certificate
networks:
- abp-network
webapp-api:
image: cincaporc/webapp-api:latest
container_name: webapp-api
build:
context: ../../
dockerfile: src/Cincaporc.WebApp.HttpApi.Host/Dockerfile.local
environment:
- ASPNETCORE_URLS=https://+:443;http://+:80;
- Kestrel__Certificates__Default__Path=/root/certificate/pc01.pfx
- Kestrel__Certificates__Default__Password=123456
- App__SelfUrl=https://pc01:44354
- App__MVCPublicUrl=https://pc01:44355
- App__CorsOrigins=https://pc01:44353,https://pc01:44355,http://webapp-web,http://webapp-web-public
- App__Timing__TimeZone=Europe/Madrid
- AuthServer__RequireHttpsMetadata=false
- AuthServer__Authority=http://webapp-authserver
- AuthServer__SwaggerClientId=WebApp_Swagger
- ConnectionStrings__Default=Host=db-server;Database=ExtranetDev;User Id=cincaporclocal;Password=cincaporclocal;Timeout=60;
- Redis__Configuration=redis
- Settings__ErpService.ErpSelected=Fake
- StringEncryption__DefaultPassPhrase=fQVpnvGGdYZ5DqcG
ports:
- "44354:443"
depends_on:
db-server:
condition: service_healthy
redis:
condition: service_healthy
restart: on-failure
volumes:
- ./certs:/root/certificate
networks:
- abp-network
webapp-authserver:
image: cincaporc/webapp-authserver:latest
container_name: webapp-authserver
build:
context: ../../
dockerfile: src/Cincaporc.WebApp.AuthServer/Dockerfile.local
environment:
- ASPNETCORE_URLS=https://+:443;http://+:80;
- App__SelfUrl=https://pc01:44334
- App__CorsOrigins=https://pc01:44353,https://pc01:44354,https://pc01:44355,http://webapp-web
- App__RedirectAllowedUrls=https://pc01:44353,https://pc01:44354,https://pc01:44355
- App__Timing__Timezone=Europe/Madrid
- AuthServer__RequireHttpsMetadata=false
- AuthServer__Authority=http://webapp-authserver
- AuthServer__SetSelfAsIssuer=true
- Kestrel__Certificates__Default__Path=/root/certificate/pc01.pfx
- Kestrel__Certificates__Default__Password=123456
- ConnectionStrings__Default=Host=db-server;Database=ExtranetDev;User Id=cincaporclocal;Password=cincaporclocal;Timeout=60;
- StringEncryption__DefaultPassPhrase=fQVpnvGGdYZ5DqcG
- Redis__Configuration=redis
- Redis__IsEnabled=false
- Settings__Abp.Account.IsSelfRegistrationEnabled=false
ports:
- "44334:443"
depends_on:
db-server:
condition: service_healthy
redis:
condition: service_healthy
restart: on-failure
volumes:
- ./certs:/root/certificate
networks:
- abp-network
db-migrator:
image: cincaporc/webapp-db-migrator:latest
container_name: db-migrator
build:
context: ../../
dockerfile: src/WebApp.DbMigrator/Dockerfile.local
environment:
- OpenIddict__Applications__WebApp_Web__RootUrl=https://pc01:44353
- OpenIddict__Applications__WebApp_Web__ClientId=WebApp_Web
- OpenIddict__Applications__WebApp_Web__ClientSecret=Pd&^901A
- OpenIddict__Applications__WebApp_Swagger__RootUrl=https://pc01:44354
- OpenIddict__Applications__WebApp_Swagger__ClientId=WebApp_Swagger
- OpenIddict__Applications__WebApp_Swagger__ClientSecret=cE64h!3P
- OpenIddict__Applications__WebApp_Web_Public__RootUrl=https://pc01:44355
- OpenIddict__Applications__WebApp_Web_Public__ClientId=WebApp_Web_Public
- OpenIddict__Applications__WebApp_Web_Public__ClientSecret=g0gMs#4j2r
- OpenIddict__Applications__WebApp_Web_Public_Tiered__RootUrl=https://pc01:44355
- OpenIddict__Applications__WebApp_Web_Public_Tiered__ClientId=WebApp_Web_Public_Tiered
- OpenIddict__Applications__WebApp_Web_Public_Tiered__ClientSecret=g0gMs#4j2r
- ConnectionStrings__Default=Host=db-server;Database=ExtranetDev;User Id=cincaporclocal;Password=cincaporclocal;Timeout=60;
depends_on:
db-server:
condition: service_healthy
networks:
- abp-network
db-server:
container_name: db-server
image: postgres
ports:
- "1434:5432"
environment:
- POSTGRES_PASSWORD=cincaporclocal
- POSTGRES_USER=cincaporclocal
- POSTGRES_DB=ExtranetDev
- PGDATA=/var/lib/postgresql/data/pgdata
volumes:
- dbdata:/var/lib/postgresql/data
networks:
- abp-network
healthcheck:
test: ["CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}"]
interval: 10s
timeout: 3s
retries: 10
start_period: 10s
redis:
container_name: redis
image: redis:alpine
ports:
- "6379:6379"
networks:
- abp-network
healthcheck:
test: ["CMD", "redis-cli","ping"]
volumes:
dbdata:
name: webapp_dbdata
networks:
abp-network:
name: webapp-network
driver: bridge
Hi,
We have a web made with ABP Framework in production environment, and now we want to add a react-native project to launch the native mobile access.
How can we do that? What's the correct abp CLI command?
Thanks for all
Hi,
Now we are running some processes within a background service, and we need to know which person runs this process. However, when the background service runs the process, it doesn't know the user who launched the background service.
How can I set the user who ran the background service as the current user within the background service?
Thanks
After I follow this steps, https://support.abp.io/QA/Questions/4691/Clientid-permissions, can't solve my issue
To override the class OpenIddictSupportedLoginModel, but it dosen't work. The methos OnPostAsync inside that never runs.
I try to override the class LoginModel in AuthServer project, but in the method OnPostAsync the CurrentUser is null.
[Dependency(ReplaceServices = true)]
[ExposeServices(typeof(LoginModel))]
public class CustomLoginModel : LoginModel
{
public CustomLoginModel(IAuthenticationSchemeProvider schemeProvider, IOptions<AbpAccountOptions> accountOptions, IAbpRecaptchaValidatorFactory recaptchaValidatorFactory, IAccountExternalProviderAppService accountExternalProviderAppService, ICurrentPrincipalAccessor currentPrincipalAccessor, IOptions<IdentityOptions> identityOptions, IOptionsSnapshot<reCAPTCHAOptions> reCaptchaOptions) : base(schemeProvider, accountOptions, recaptchaValidatorFactory, accountExternalProviderAppService, currentPrincipalAccessor, identityOptions, reCaptchaOptions)
{
}
public override async Task<IActionResult> OnPostAsync(string action)
{
var clientIdClaim = CurrentUser.GetAllClaims().FirstOrDefault(x => x.Type == AbpClaimTypes.ClientId);
if (clientIdClaim != null)
{
if (clientIdClaim.Value == "Internal")
{
if (CurrentUser.IsInRole(Roles.RoleConsts.Internal))
return await base.OnPostAsync(action);
else
throw new AbpAuthorizationException();
}
if (clientIdClaim.Value == "Public")
{
return await base.OnPostAsync(action);
}
}
return await base.OnPostAsync(action);
}
}
What I can do, to get ClientId and Roles from user to try to login?
Thanks
I get strange behavior when running my project on my production service.
Everything starts up fine, but after a few minuts doing nothing on the web, when I run some action on the web, such as click menu option, the left hand menu disappear, and the web shows me that I'm not authorized. If I try to logout and go back in again the issue persists. I need to clean the browser cache and redis cache and then everything shows up.
Hi,
I want to deny access from some client_id application with some role to some application sevice.
Is that possbile? How can I do that?
Thanks for all
Hi,
I want to publish an API access from a 3rd external party like a Postman.
These ara the step I followed: 1.- Create the new client_id 2.- Acced from Postman to the URI https://localhost:44335/connect/token with client_id, secret and more 3.- I have obtenied the access_token *****************************
But with this token I can't call the API, because the request is 401 Unauthorized
For example: https://localhost:44368/api/openiddict/applications with header => Authorization: Bearer *****************************
What am I doing wrong?
Thanks for all
1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func
3 proceed)
at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo)
at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue1.ProceedAsync() at Volo.Abp.GlobalFeatures.GlobalFeatureInterceptor.InterceptAsync(IAbpMethodInvocation invocation) at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter
1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed) at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo) at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue
1.ProceedAsync()
at Volo.Abp.Auditing.AuditingInterceptor.ProceedByLoggingAsync(IAbpMethodInvocation invocation, IAuditingHelper auditingHelper, IAuditLogScope auditLogScope)
at Volo.Abp.Auditing.AuditingInterceptor.ProcessWithNewAuditingScopeAsync(IAbpMethodInvocation invocation, AbpAuditingOptions options, ICurrentUser currentUser, IAuditingManager auditingManager, IAuditingHelper auditingHelper, IUnitOfWorkManager unitOfWorkManager)
at Volo.Abp.Auditing.AuditingInterceptor.ProcessWithNewAuditingScopeAsync(IAbpMethodInvocation invocation, AbpAuditingOptions options, ICurrentUser currentUser, IAuditingManager auditingManager, IAuditingHelper auditingHelper, IUnitOfWorkManager unitOfWorkManager)
at Volo.Abp.Auditing.AuditingInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func
3 proceed)
at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo)
at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue1.ProceedAsync() at Volo.Abp.Validation.ValidationInterceptor.InterceptAsync(IAbpMethodInvocation invocation) at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter
1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed) at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo) at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue
1.ProceedAsync()
at Volo.Abp.Uow.UnitOfWorkInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func
3 proceed)
at Cincaporc.WebApp.BackgroundServices.Farms.SyncActiveFarmsWorker.DoWorkAsync(CancellationToken cancellationToken) in C:\Users\jmalla\source\Cincaporc.WebApp\src\Cincaporc.WebApp.BackgroundServices\Farms\SyncActiveFarmsWorker.cs:line 35
at System.Runtime.CompilerServices.TaskAwaiter.GetResult()Hi everyone,
I'm having some issues when trying to lunch an aplication service method from background job.
I know, this isn't a good practice, but in this case I need to create a User in a backgrond job, and I can't find this method in any domain service, so I have to call IIdentityUserAppService.CreateAsync()
How can I do it?
Thanks
Hi everyone,
I'm having a problem when I try to expand some extra properties on IdentityUser.
What I want to do is put 2 extra properties on IdentityUser as a column in the table, and I need to be able to insert infromation from de UI
First of all, I followed abp documentación by putting this code:
public static class WebAppEfCoreEntityExtensionMappings { ..... > public static void Configure() > { > ..... > OneTimeRunner.Run(() => > { > > ObjectExtensionManager.Instance > > .MapEfCoreProperty<IdentityUser, AgentType>( > > ExtendedIdentityUserConsts.AgentTypePropertyName > > ); > > ObjectExtensionManager.Instance > > .MapEfCoreProperty<IdentityUser, int>( > > ExtendedIdentityUserConsts.AgentErpIdPropertyName > > ); > }); > } }
And
public static class WebAppModuleExtensionConfigurator { > ... > private static void ConfigureExtraProperties() > { > ObjectExtensionManager.Instance.Modules() > .ConfigureIdentity(identity => > { > identity.ConfigureUser(user => > { > user.AddOrUpdateProperty<AgentType>( > ExtendedIdentityUserConsts.AgentTypePropertyName > ); > user.AddOrUpdateProperty<int>( > ExtendedIdentityUserConsts.AgentErpIdPropertyName > ); > }); > }); > } }
And finally created migrations.
Now, I have tow new columns in my database's AbpUsers table and these columns appear in the UI, but when I insert information from the UI, the new properties information go to the Extraproperties column of the table with JSON format.
If I delete the content of WebAppModuleExtensionConfigurator and try to put the information from code, this information go to the correct columns of the table in the database but then I haven't insert the information from the UI.
How can I solve this issue?
Thanks for all