#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.
Может ли кто-нибудь помочь мне с этим или показать мне образец?
Кроме того, для части авторизации мне также нужно управлять пользователями и ролями внутри базы данных , и если там нет пользователя, создайте пользователя в этой таблице пользователей.