duende 失踪索赔

问题描述 投票:0回答:1

我正在测试 Duende Identity Server。

我使用名为 6_JS_with_backend 的示例来测试 Google IDP。初始样本工作正常。

我修改了它,用数据库替换了内存数据(使用身份框架),然后声明缺少个人资料信息(姓名、名字、姓氏)。一旦我切换回“记忆中”,它就又恢复正常了。 EF迁移已经成功创建数据库,没有执行错误。

我不明白发生了什么事。

Javascript 客户端未修改。

IdentityServer 配置服务:

 public static WebApplication ConfigureServices(this WebApplicationBuilder builder)
 {
 var migrationsAssembly = typeof(Program).Assembly.GetName().Name;

 builder.Services.AddRazorPages();
 string connectionString = builder.Configuration.GetConnectionString("DefaultConnection");
 builder.Services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(connectionString));

 builder.Services.AddIdentity<ApplicationUser, ApplicationRole>()
   .AddEntityFrameworkStores<ApplicationDbContext>();

 builder.Services.AddIdentityServer(options =>
 {
     options.EmitStaticAudienceClaim = true;
 })
     .AddConfigurationStoreCache()
     .AddConfigurationStore(options =>
     {
         options.EnablePooling = true;
         options.ConfigureDbContext = builder =>
         {
             builder.UseSqlServer(connectionString, configure =>
             {
                 configure.MigrationsAssembly(migrationsAssembly);
             });
         };
     })
     .AddOperationalStore(options =>
     {
         options.EnablePooling = true;
         options.ConfigureDbContext = builder =>
         {
             builder.UseSqlServer(connectionString, configure =>
             {
                 configure.MigrationsAssembly(migrationsAssembly);
             });
         };

         options.EnableTokenCleanup = true;
         options.TokenCleanupInterval = (int)TimeSpan.FromDays(20).TotalSeconds;
     });
 builder.Services.AddIdentityServerConfiguration(opt => opt.LicenseKey = "<TEST>").AddClientConfigurationStore();
 builder.Services.AddConfigurationDbContext<ConfigurationDbContext>(options =>
 {
     options.ConfigureDbContext = builder => builder.UseSqlServer(connectionString);
 });

 var configuration = builder.Configuration;
 // Put in Keyvault
 builder.Services.AddAuthentication()
     .AddGoogle("Google", options =>
     {
         options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
         options.ClientId = configuration["Authentication:Google:ClientId"]!;
         options.ClientSecret = configuration["Authentication:Google:ClientSecret"]!;
     });      

 return builder.Build();

}

应用角色:

    using Microsoft.AspNetCore.Identity;

namespace IdentityServer.Models
{
    public class ApplicationRole : IdentityRole
    {
        
    }
}

应用程序用户

using Microsoft.AspNetCore.Identity;

namespace IdentityServer.Models
{
    public class ApplicationUser : IdentityUser
    {
        public string? TenantId { get; set; }
        public string? License { get; set; }
    }
}

内存结果: enter image description here

数据库结果: enter image description here

我检查了数据库。 客户端在这里,还有客户端范围和身份资源。

enter image description here

duende-identity-server duende
1个回答
0
投票

我发现 Duende.IdentityServer.EntityFramework.Entities.IdentityResource 中没有名为配置文件的用户声明。名为 IdentityResourceClaims 的表为空。我没有找到任何关于此的文档,并且提供该表的代码示例未填充该表。 我填写了 IdentityResourceClaims,它解决了问题。

© www.soinside.com 2019 - 2024. All rights reserved.