Проверка подлинности Azure AD в сочетании с проверкой подлинности отдельных учетных записей пользователей для веб-сборки Asp.net Размещенный в .NET 5.5

#asp.net #blazor #identityserver4 #openid-connect #webassembly

Вопрос:

Я создаю приложение, в котором некоторые пользователи могут создать индивидуальную учетную запись и войти с ее помощью. Кроме того, мне нужно, чтобы пользователи могли входить в систему, если у них есть Azure AD. Я использовал сервер идентификации 4 для отдельных учетных записей, и он работает правильно.

для Azure Ad я нашел несколько ответов на Stackoverflow и на их основе реализовал свой код следующим образом:

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

            services.AddDatabaseDeveloperPageExceptionFilter();

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

            services.AddIdentityServer()
                            .AddApiAuthorization<ApplicationUser, ApplicationDbContext>()
                            .AddProfileService<IdentityProfileService>();
            
            services.AddAuthentication(sharedOptions =>
            {
                sharedOptions.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
                sharedOptions.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
            }).AddOpenIdConnect("AAD", "Azure Active Directory", options =>
                            {
                                options.ClientSecret = "<Secrete>";
                                options.ResponseType = OpenIdConnectResponseType.CodeIdToken;
                                options.ClientId = "<ClientId>";
                                options.Authority = "https://login.microsoftonline.com/<tenantId>/";
                                options.CallbackPath = "/authentication/login-callback";
                                options.SaveTokens = true;
                                options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
                                
                            }).AddCookie()
            .AddIdentityServerJwt();
 

Я также создал URI обратного вызова в Azure в качестве веб-платформы.

когда я проверяю это у почтальона, он работает правильно и получает жетон. Однако в моем приложении он перенаправляет это на https://localhost:50001/identity/account/externallogin?returnUrl=/connect/authorize/callback?client_id ... и показывает «Извините, по этому адресу ничего нет».

Я думаю, это потому, что я использую WebAssembly с ASP.Net Размещено в .NET 5.

Может ли кто-нибудь помочь мне с этим или показать мне образец?

Кроме того, для части авторизации мне также нужно управлять пользователями и ролями внутри базы данных , и если там нет пользователя, создайте пользователя в этой таблице пользователей.