Аутентификация Blazor WebAssembly с IdentityServer4, Asp. Net Core Identity и настраиваемый поставщик без Entity Framework - PullRequest
3 голосов
/ 27 мая 2020

У меня есть приложение Blazor на стороне сервера, которое использует настраиваемый поставщик удостоверений для CosmosDB, который не использует Entity Framework. Я хочу преобразовать приложение в Blazor WebAssembly, размещенное на Asp. net Core .

Пользовательский поставщик Startup.cs на стороне сервера My Blazor выглядит следующим образом:

 services.AddTransient<IRoleStore<ApplicationRole>, CosmosDBRoleStore<ApplicationRole>>();
 services.AddTransient<IUserStore<ApplicationUser>, CosmosDBUserStore<ApplicationUser>>();
 services.AddIdentity<ApplicationUser, ApplicationRole>().AddDefaultTokenProviders();
 services.AddAuthentication();
 services.AddAuthorization();

Текущий шаблон в Visual Studio для Blazor WebAssembly размещен на Asp. net Core использует Identity Server4 поверх Asp. Net Core Identity + SQL Server , и для этого требуется DBContext от Entity Framework Core.

 services.AddDbContext<ApplicationDbContext>(options =>
                options.UseSqlServer(
                    Configuration.GetConnectionString("DefaultConnection")));

  services.AddDefaultIdentity<ApplicationUser>(options => 
                options.SignIn.RequireConfirmedAccount = true)
                .AddEntityFrameworkStores<ApplicationDbContext>();

  services.AddIdentityServer().AddApiAuthorization<ApplicationUser, ApplicationDbContext>();
  services.AddAuthentication().AddIdentityServerJwt();

Я установил настраиваемый поставщик удостоверений Cosmos DB, но строка

 services.AddIdentityServer().AddApiAuthorization<ApplicationUser, ApplicationDbContext>();

требует DBContext Entity Framework для заполнения всех параметров для IdentityServer4.

Я проанализировал четыре сценария ios:

1) Используйте Entity Framework поверх моего настраиваемого поставщика удостоверений, но для этого потребуется почти полное перекодирование, поскольку он использует глубоко настроенный Интеграция CosmosDB с настраиваемым входом / выходом / регистрацией и c .. страницами

2) Используйте Identity Server4 поверх моего настраиваемого поставщика, но я новичок в этом, и вся структура сложна и d все примеры с Asp. Net Core Identity также используют Entity Framework, и я не могу понять, как это сделать.

3) Отбросьте мой пользовательский поставщик удостоверений и используйте Azure B2 C. После некоторых тестов я обнаружил, что это беспорядочно и сложно настроить, с всплывающими окнами и небрендированными письмами с подтверждением. Это также свело бы к нулю недели работы над настраиваемыми страницами редактирования профиля.

4) Сохраните проект на стороне сервера Blazor и не переносите

Есть ли что-то, что мне не хватает, что помогло бы решить эта проблема? Любая библиотека, которая может помочь настроить IdentityServer4 с помощью настраиваемого поставщика удостоверений, который не использует Entity Framework?

1 Ответ

0 голосов
/ 19 августа 2020

После нескольких дней тестов я наконец смог достичь того, что хотел:

«Перенос приложения Blazor Server на Blazor WebAssembly, размещенный на Asp. net Core, сохраняя мои собственные Asp. net Поставщик Identity + CosmosDB, без использования Identity Server 4 и Entity Framework. "

Я создал ручную реализацию службы аутентификации токенов JWT + поставщик состояния и подключил ее к Asp. Net Core Identity.

Я использовал этот проект в качестве руководства, которое содержит полную рабочую реализацию JWT:

https://github.com/CodeMazeBlog/blazor-series/tree/blazor-webassembly-authentication-aspnetcore-identity

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...