Я создал проект Identity Server 4, который запускает наш Identity Server, и я создал интерфейс для проекта, чтобы мы могли его поддерживать. Проблема, с которой я сталкиваюсь, заключается в том, что, похоже, у меня не может быть промежуточного программного обеспечения Identity Server и использование Identity Authentication в одном проекте. Есть ли способ заставить эти две вещи работать? Я не хочу делить это на два проекта.
var builder = services.AddIdentityServer(options =>
{
options.Events.RaiseErrorEvents = true;
options.Events.RaiseInformationEvents = true;
options.Events.RaiseFailureEvents = true;
options.Events.RaiseSuccessEvents = true;
})
// this adds the config data from DB (clients, resources)
.AddConfigurationStore(options =>
{
options.ConfigureDbContext = b =>
b.UseSqlServer(connectionString,
sql => sql.MigrationsAssembly(migrationsAssembly));
})
// this adds the operational data from DB (codes, tokens, consents)
.AddOperationalStore(options =>
{
options.ConfigureDbContext = b =>
b.UseSqlServer(connectionString,
sql => sql.MigrationsAssembly(migrationsAssembly));
// this enables automatic token cleanup. this is optional.
options.EnableTokenCleanup = true;
// frequency in seconds to cleanup stale grants. 15 is useful during debugging
options.TokenCleanupInterval = int.Parse(Configuration.GetSection("TokenCleanup").Value);
})
.AddDeveloperSigningCredential();
services.AddIdentity<ApplicationUser, ApplicationRole>().Services.ConfigureApplicationCookie(options =>
{
options.LoginPath = "/Saml/SingleSignOn";
options.SlidingExpiration = true;
options.LogoutPath = "/Saml/SingleSignOn";
options.Cookie.Expiration = new TimeSpan(1, 0, 0);
options.Cookie.IsEssential = true;
});
services.AddTransient<IUserStore<ApplicationUser>, CustomUserStore>();
services.AddTransient<IRoleStore<ApplicationRole>, CustomRoleStore>();
services.AddScoped<IUserClaimsPrincipalFactory<ApplicationUser>, MyUserClaimsPrincipalFactory>();