0
nicolas.muniere@soprasteria.com created
We are facing "Duplicate api resources" exception using identity server pro module. This bug has already been reported here a few month ago : https://support.abp.io/QA/Questions/2672/Duplicate-api-resources-in-identity-server
liangshiwei said:
I create an internal issue and will fix it in the next version.
But still no fix available, and the ticket is locked. Can you help?
Markdown supported.
Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post)
4 Answer(s)
-
0Markdown supported.Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post)
-
0
Hi,
After the deep check, it's really a problem, only working the first time.
You can try this:
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using IdentityServer4.Configuration; using IdentityServer4.Models; using IdentityServer4.Stores; using Microsoft.Extensions.Caching.Distributed; using Microsoft.Extensions.Options; using Volo.Abp.Caching; using Volo.Abp.DependencyInjection; using Volo.Abp.IdentityServer; using Volo.Abp.IdentityServer.ApiResources; using Volo.Abp.IdentityServer.ApiScopes; using Volo.Abp.IdentityServer.IdentityResources; using Volo.Abp.ObjectMapping; using ApiResource = Volo.Abp.IdentityServer.ApiResources.ApiResource; using ApiScope = Volo.Abp.IdentityServer.ApiScopes.ApiScope; using IdentityResource = Volo.Abp.IdentityServer.IdentityResources.IdentityResource; namespace Qa.Data; [ExposeServices(typeof(ResourceStore), typeof(IResourceStore))] public class MyResourceStore : ResourceStore { public MyResourceStore(IIdentityResourceRepository identityResourceRepository, IObjectMapper<AbpIdentityServerDomainModule> objectMapper, IApiResourceRepository apiResourceRepository, IApiScopeRepository apiScopeRepository, IDistributedCache<IdentityServer4.Models.IdentityResource> identityResourceCache, IDistributedCache<IdentityServer4.Models.ApiScope> apiScopeCache, IDistributedCache<IdentityServer4.Models.ApiResource> apiResourceCache, IDistributedCache<Resources> resourcesCache, IOptions<IdentityServerOptions> options) : base( identityResourceRepository, objectMapper, apiResourceRepository, apiScopeRepository, identityResourceCache, apiScopeCache, apiResourceCache, resourcesCache, options) { } protected override async Task<IEnumerable<TModel>> GetCacheItemsAsync<TEntity, TModel>( IDistributedCache<TModel> cache, IEnumerable<string> keys, Func<string[], Task<List<TEntity>>> entityFactory, Func<List<TModel>, string, List<IEnumerable<KeyValuePair<string, TModel>>>> cacheItemsFactory, string cacheKeyPrefix = null) { var result = await base.GetCacheItemsAsync(cache, keys, entityFactory, cacheItemsFactory, cacheKeyPrefix); if (result is IEnumerable<IdentityServer4.Models.ApiResource> apiResources) { return (IEnumerable<TModel>) apiResources.DistinctBy(x => x.Name); } return result; } }Add your
*.EntityFrameworkCoremodulepublic override void PreConfigureServices(ServiceConfigurationContext context) { QaEfCoreEntityExtensionMappings.Configure(); PreConfigure<IIdentityServerBuilder>(builder => { builder.AddResourceStore<MyResourceStore>(); }); }Markdown supported.Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post) -
0
We will fix it in the patch version, your ticket has been refunded.
See: https://github.com/abpframework/abp/issues/13285
Markdown supported.Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post) -
0
Thanks, it's working!
If this ticket can help someone else, MyResourceStore need to be created in Domain layer
Markdown supported.Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post)



