Activities of "htavukcu"

Hello,

I would like to add a new provider in addition to the existing ExternalProviders you currently support. The code I’m using is as follows:

Configure<AbpExternalProviderOptions>(options =>
{
    options.Definitions.Add(new ExternalProviderDefinition()
    {

        Name = OpenIdConnectDefaults.AuthenticationScheme,
        Properties = new System.Collections.Generic.List<ExternalProviderDefinitionProperty>()
        {
            new ExternalProviderDefinitionProperty()
            {
                PropertyName = "ClientId"
            },
            new ExternalProviderDefinitionProperty()
            {
                PropertyName = "ClientSecret",
                IsSecret = true
            },
            new ExternalProviderDefinitionProperty()
            {
                PropertyName = "Authority"
            }
        }

    });

});

When I try to add a record for the new provider via the API (/api/account-admin/settings/external-provider), I receive the following error:

[00:44:30 ERR] External provider with OpenIdConnect not definition!
System.Exception: External provider with OpenIdConnect not definition!
   at Volo.Abp.Account.ExternalProviders.ExternalProviderSettingsHelper.SetAsync(ExternalProviderSettings settings)
   at Volo.Abp.Account.AccountSettingsAppService.UpdateExternalProviderAsync(AccountExternalProviderSettingsDto input)
   at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous(IInvocation invocation, IInvocationProceedInfo proceedInfo)
   at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapter.ProceedAsync()
   at Volo.Abp.Authorization.AuthorizationInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
   at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync(IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed)
   at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous(IInvocation invocation, IInvocationProceedInfo proceedInfo)
   at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapter.ProceedAsync()
   at Volo.Abp.GlobalFeatures.GlobalFeatureInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
   at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync(IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed)
   at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous(IInvocation invocation, IInvocationProceedInfo proceedInfo)
   at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapter.ProceedAsync()
   at Volo.Abp.Auditing.AuditingInterceptor.ProceedByLoggingAsync(IAbpMethodInvocation invocation, AbpAuditingOptions options, IAuditingHelper auditingHelper, IAuditLogScope auditLogScope)
   at Volo.Abp.Auditing.AuditingInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
   at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync(IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed)
   at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous(IInvocation invocation, IInvocationProceedInfo proceedInfo)
   at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapter.ProceedAsync()
   at Volo.Abp.Validation.ValidationInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
   at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync(IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed)
   at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous(IInvocation invocation, IInvocationProceedInfo proceedInfo)
   at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapter.ProceedAsync()
   at Volo.Abp.Uow.UnitOfWorkInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
   at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync(IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed)
   at Volo.Abp.Account.AccountSettingsController.UpdateExternalProviderAsync(AccountExternalProviderSettingsDto input)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskResultExecutor.Execute(ActionContext actionContext, IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Logged|12_1(ControllerActionInvoker invoker)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextExceptionFilterAsync>g__Awaited|26_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)

Is it supported to add a new provider this way? Thanks.

Thanks for the comment.

Hi,

I’m trying to make the ExternalProviders and VerifyPasswordDuringExternalLogin settings in the Account module tenant-specific by setting the Providers property to "T". To achieve this, I’ve created a custom SettingProvider class that inherits from SettingDefinitionProvider, as described in the documentation.

Below is the relevant code snippet from the Define method where I attempt to modify these settings:

public override void Define(ISettingDefinitionContext context)
{        
    var accountExternalProviders = context.GetOrNull(AccountSettingNames.ExternalProviders);
    if (accountExternalProviders != null)
    {
        accountExternalProviders.Providers.Clear();
        accountExternalProviders.Providers.Add("T");
    }       

    var verifyPasswordDuringExternalLogin = context.GetOrNull(AccountSettingNames.VerifyPasswordDuringExternalLogin);
    if (verifyPasswordDuringExternalLogin != null)
    {
        verifyPasswordDuringExternalLogin.Providers.Clear();
        verifyPasswordDuringExternalLogin.Providers.Add("T");
    }

    //Define your own settings here. Example:
    //context.Add(new SettingDefinition(SuiteSettings.MySetting1));
}

However, I’m encountering an issue: when the application is initialized for the first time, the Define method is called and works correctly — the related settings in the SettingDefinition table are updated as expected. But when the Define method is called again, those settings are no longer present in the context, so I cannot apply the changes, and the previously updated Providers value is set to null in the database.

Could you please help me understand the reason behind this behavior and suggest a solution?

Thank you.

Hi,

In our project, we use the AuthServer provided by ABP (configured as an MVC and decoupled project) for user authentication. After a successful login, the user is redirected to our custom-developed UI application. This UI consists of web and mobile clients, which communicate with the backend developed using ABP’s infrastructure (ApiHost).

What would be the best approach to transfer the language selected by the user during login on the AuthServer to both the UI (web and mobile) and the ApiHost layers?

Is there an ABP-recommended method or best practice to achieve this? The goal is to maintain the user's language preference consistently across all layers of the application (UI and API).

The diagram I added may help:

Thank you in advance for your help!

Thanks for replying, I will try and let you inform

Yes exactly like this,https://localhost:44303/tenantname/api/abp

https://localhost:44303/tenantname/swagger/index.html https://localhost:44303/tenantname/Account/Login

Hi,

I need your support on a few topics:

1-Is there a centralized and efficient way to add the {__tenant} parameter to automatically generated endpoint routes?

2-How can I include the {__tenant} parameter in the endpoints displayed in Swagger UI?

3-Is there any example or documentation available regarding the necessary configuration for AuthServer and ApiHost projects to support this setup?

I’d really appreciate your help. Thank you!

Hello, I need more information about RouteTenantResolveContributor, but I couldn't find it in your documentation. Would it be possible for you to share an example with me? How can I configure it and, for example, set up Swagger routing? Thank you for your help.

Thanks for reply, I think it's done.

Hi,

I have completed the implementation, how can I add content to it?

Thanks for reply, I think it's done.

Showing 11 to 20 of 32 entries
Learn More, Pay Less
33% OFF
All Trainings!
Get Your Deal
Mastering ABP Framework Book
The Official Guide
Mastering
ABP Framework
Learn More
Mastering ABP Framework Book
Made with ❤️ on ABP v10.0.0-preview. Updated on September 18, 2025, 07:10