Open Closed

OpenIddict wildcard domains dependency resolution AbpValidateClientRedirectUri stacktrace #4942


User avatar
0
s.beckers 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.1.1
  • UI type: Angular
  • DB provider: EF Core
  • Tiered (MVC) or Identity Server Separated (Angular): no
  • Exception message and stack trace:
Autofac.Core.DependencyResolutionException: An exception was thrown while activating Volo.Abp.OpenIddict.WildcardDomains.AbpValidateClientRedirectUri.
 ---> Autofac.Core.DependencyResolutionException: An exception was thrown while invoking the constructor 'Void .ctor(Microsoft.Extensions.Options.IOptions`1[Volo.Abp.OpenIddict.WildcardDomains.AbpOpenIddictWildcardDomainOptions], OpenIddict.Abstractions.IOpenIddictApplicationManager)' on type 'AbpValidateClientRedirectUri'.
 ---> System.InvalidOperationException: The core services must be registered when enabling the OpenIddict server feature.
To register the OpenIddict core services, reference the 'OpenIddict.Core' package and call 'services.AddOpenIddict().AddCore()' from 'ConfigureServices'.
Alternatively, you can disable the built-in database-based server features by enabling the degraded mode with 'services.AddOpenIddict().AddServer().EnableDegradedMode()'.
   at OpenIddict.Server.OpenIddictServerHandlers.Authentication.ValidateClientRedirectUri..ctor()
   at Volo.Abp.OpenIddict.WildcardDomains.AbpValidateClientRedirectUri..ctor(IOptions`1 wildcardDomainsOptions, IOpenIddictApplicationManager applicationManager)
   at lambda_method503(Closure, Object[])
   at Autofac.Core.Activators.Reflection.BoundConstructor.Instantiate()
   --- End of inner exception stack trace ---
   at Autofac.Core.Activators.Reflection.BoundConstructor.Instantiate()
   at Autofac.Core.Activators.Reflection.ReflectionActivator.<>c__DisplayClass12_0.<UseSingleConstructorActivation>b__0(ResolveRequestContext ctxt, Action`1 next)
   at Autofac.Core.Resolving.Middleware.DisposalTrackingMiddleware.Execute(ResolveRequestContext context, Action`1 next)
   at Autofac.Builder.RegistrationBuilder`3.&lt;&gt;c__DisplayClass41_0.&lt;PropertiesAutowired&gt;b__0(ResolveRequestContext ctxt, Action`1 next)
   at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next)
   --- End of inner exception stack trace ---
   at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next)
   at Autofac.Core.Resolving.Middleware.SharingMiddleware.<>c__DisplayClass5_0.<Execute>b__0()
   at Autofac.Core.Lifetime.LifetimeScope.CreateSharedInstance(Guid id, Func`1 creator)
   at Autofac.Core.Lifetime.LifetimeScope.CreateSharedInstance(Guid primaryId, Nullable`1 qualifyingId, Func`1 creator)
   at Autofac.Core.Resolving.Middleware.SharingMiddleware.Execute(ResolveRequestContext context, Action`1 next)
   at Autofac.Core.Resolving.Middleware.CircularDependencyDetectorMiddleware.Execute(ResolveRequestContext context, Action`1 next)
   at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, ResolveRequest request)
   at Autofac.Core.Resolving.ResolveOperation.ExecuteOperation(ResolveRequest request)
   at Autofac.ResolutionExtensions.TryResolveService(IComponentContext context, Service service, IEnumerable`1 parameters, Object& instance)
   at Autofac.ResolutionExtensions.ResolveOptionalService(IComponentContext context, Service service, IEnumerable`1 parameters)
   at OpenIddict.Server.OpenIddictServerDispatcher.&lt;&gt;c__DisplayClass4_0`1.<<DispatchAsync>g__GetHandlersAsync|0>d.MoveNext()
--- End of stack trace from previous location ---
   at OpenIddict.Server.OpenIddictServerDispatcher.<>c__DisplayClass4_0`1.&lt;&lt;DispatchAsync&gt;g__GetHandlersAsync|0>d.System.Threading.Tasks.Sources.IValueTaskSource&lt;System.Boolean&gt;.GetResult(Int16 token)
   at OpenIddict.Server.OpenIddictServerDispatcher.DispatchAsync[TContext](TContext context)
   at OpenIddict.Server.OpenIddictServerDispatcher.DispatchAsync[TContext](TContext context)
   at OpenIddict.Server.OpenIddictServerHandlers.Authentication.ValidateAuthorizationRequest.HandleAsync(ProcessRequestContext context)
   at OpenIddict.Server.OpenIddictServerDispatcher.DispatchAsync[TContext](TContext context)
   at OpenIddict.Server.OpenIddictServerDispatcher.DispatchAsync[TContext](TContext context)
   at OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandler.HandleRequestAsync()
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at Volo.Abp.AspNetCore.Security.AbpSecurityHeadersMiddleware.InvokeAsync(HttpContext context, RequestDelegate next)
   at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.&lt;&gt;c__DisplayClass6_1.&lt;&lt;UseMiddlewareInterface&gt;b__1>d.MoveNext()
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Localization.RequestLocalizationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.RequestLocalization.AbpRequestLocalizationMiddleware.InvokeAsync(HttpContext context, RequestDelegate next)
   at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.&lt;&gt;c__DisplayClass6_1.&lt;&lt;UseMiddlewareInterface&gt;b__1>d.MoveNext()
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddlewareImpl.Invoke(HttpContext context)

Adding the following configuration to the XHttpApiHostModule, we get the stacktrace on any API request. I've tested this by adding it to a clean startup template of ABP v7.1.1 app and app-pro. This setup was working in v6.0.1. Since this is a DependencyResolutionException maybe there are some missing module dependencies? I also tried to run the sample app https://github.com/abpframework/abp-samples/tree/master/DomainTenantResolver/OpenIddict/NG but had no succes.

public override void ConfigureServices(ServiceConfigurationContext context)
{
    ...
    Configure&lt;AbpTenantResolveOptions&gt;(options =>
    {
        options.AddDomainTenantResolver("https://{0}.our.app");
    });
    ...
}

public override void PreConfigureServices(ServiceConfigurationContext context)
{
    ...
    PreConfigure&lt;AbpOpenIddictWildcardDomainOptions&gt;(options =>
    {
        options.EnableWildcardDomainSupport = true;
        options.WildcardDomainsFormat.Add("https://{0}.our.app");
    });
    ...
}

3 Answer(s)
  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    hi

    You can copy the latest code of AbpValidateClientRedirectUri and register it.

    https://github.com/abpframework/abp/blob/0dfbbc0950280c496a01925df60be1cad1793917/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/AbpOpenIddictAspNetCoreModule.cs#L120-L121

    https://github.com/abpframework/abp/pull/16284

    https://github.com/abpframework/abp/blob/dev/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/WildcardDomains/AbpValidateClientRedirectUri.cs

  • User Avatar
    0
    s.beckers created

    Thank you! In which version will the bug fix be released?

  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    hi

    7.2

Made with ❤️ on ABP v8.2.0-preview Updated on March 25, 2024, 15:11