Я пытаюсь создать функцию аутентификации, используя Identity Core 2.0 с моими собственными пользовательскими таблицами и EF Core 2.0.
Я использую это для справки: https://docs.microsoft.com/en-us/aspnet/core/security/authentication/identity-custom-storage-providers?view=aspnetcore-2.1.
Дело в том, что я не использую ни роли, ни утверждения, поэтому у меня есть одна таблица / DbSet
, содержащая информацию о пользователе. Я реализовал необходимые интерфейсы, и все выглядит хорошо. Я также использую аутентификацию JWT. Проблема в том, что я не уверен, как настроить службы при запуске. Вот мой текущий код:
public void ConfigureServices(IServiceCollection services)
{
services
.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = Configuration["JwtIssuer"],
ValidAudience = Configuration["JwtAudience"],
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["JwtKey"]))
};
});
services.AddDbContext<MyDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddIdentity<User, IdentityRole>()
//.AddEntityFrameworkStores<MyDbContext>()
.AddDefaultTokenProviders();
services.AddTransient<IUserRepository, UserRepository>();
services.AddTransient<IUserStore<User>, UserStore>();
services.AddTransient<IEmailSender, EmailSender>();
services.AddMvc();
}
где User
- моя пользовательская реализация пользовательского класса. То же самое касается UserStore
.
Однако я не уверен, как настроить конкретные службы идентификации. Я должен вызывать services.AddIdentity
, но для этого требуется параметр типа TRole
, который я не реализую, и нет никаких изменений без предоставления типа роли. Я должен либо реализовать пустышку / использовать IdentityRole
, либо мне нужно извлечь содержимое метода расширения и добавить их вручную, что не кажется мне хорошей идеей. Кроме того, он добавляет Cookie Auth по умолчанию, поэтому он не будет сокращать его для меня. Вот тело метода расширения, который я нашел: Идентификатор ASP.NET Ref-1 / Идентификатор ASP.NET Ref-2 .
Как мне зарегистрировать услуги? Кроме того, я пропускаю что-то еще в конфигурации в целом, учитывая обстоятельства (JWT, Идентичность с пользовательскими таблицами).