スタートアップblazorboilerplateクラスのソースコード解析: https://github.com/enkodellc/blazorboilerplate/blob/master/src/BlazorBoilerplate.Server/Startup.cs
--------------------------------------------------
1、 サービスを提供しています。AddIdentity<ApplicationUser、IdentityRole <GUID >>()
.AddRoles <IdentityRole <GUID >>()
.AddEntityFrameworkStores <ApplicationDbContext>()
.AddDefaultTokenProviders()。
サービスを提供しています。AddScoped <IUserClaimsPrincipalFactory <ApplicationUser>、AdditionalUserClaimsPrincipalFactory>();
//追加IdentityServer
VAR identityServerBuilderは、サービスを=。AddIdentityServer(オプション=>
{
options.IssuerUri = authAuthority。
options.Events.RaiseErrorEvents =はtrue。
options.Events.RaiseInformationEvents =はtrue。
options.Events.RaiseFailureEvents =はtrue。
options.Events.RaiseSuccessEvents =はtrue。
})
。AddConfigurationStore(オプション=>
{
options.ConfigureDbContext = DbContextOptionsBuilder。
})
。AddOperationalStore(オプション=>
{
options.ConfigureDbContext = DbContextOptionsBuilder。
//これは、自動トークンクリーンアップを可能にします。これはオプションです。
options.EnableTokenCleanup =はtrue。
options.TokenCleanupInterval = 3600; //秒で1時間
})
。AddAspNetIdentity <ApplicationUser>();
2、===========================================
VAR authBuilder =サービス。AddAuthentication(オプション=>
{
options.DefaultScheme = IdentityServerAuthenticationDefaults.AuthenticationScheme。
})
。AddIdentityServerAuthentication(オプション=>
{
options.Authority = authAuthority。
options.SupportedTokens = SupportedTokens.Jwt。
options.RequireHttpsMetadata = _environment.IsProduction()?真/偽;
options.ApiName = IdentityServerConfig.ApiName。
});
#########################################
サービスを提供しています。設定<IdentityOptions> (オプション=>
{
//パスワードの設定
options.Password.RequireDigit = falseは、
options.Password.RequiredLength = 6。
options.Password.RequireNonAlphanumeric = falseは、
options.Password.RequireUppercase = falseは、
options.Password.RequireLowercase = falseは、
//options.Password.RequiredUniqueChars = 6。
//ロックアウトの設定
options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(30)。
options.Lockout.MaxFailedAccessAttempts = 10。
options.Lockout.AllowedForNewUsers =はtrue。
//確認メールユーザーの設定が必要
もし(Convert.ToBoolean(構成[ "BlazorBoilerplate:RequireConfirmedEmail"] ?? "偽"))
{
options.User.RequireUniqueEmail = falseは、
options.SignIn.RequireConfirmedEmail =はtrue。
}
});
3、================================================ =========
//ポリシーの追加/クレーム/認証 - https://stormpath.com/blog/tutorial-policy-based-authorization-asp-net-core
services.AddAuthorization(オプション=>
{
options.AddPolicy(Policies.IsAdmin、Policies.IsAdminPolicy())。
options.AddPolicy(Policies.IsUser、Policies.IsUserPolicy())。
options.AddPolicy(Policies.IsReadOnly、Policies.IsReadOnlyPolicy())。
options.AddPolicy(Policies.IsMyDomain、Policies.IsMyDomainPolicy())。//のみサーバー側の操作上の有効な
});
services.AddTransient <IAuthorizationHandler、DomainRequirementHandler>();
4、************************************************ ************************************
services.Configure <CookiePolicyOptions>(オプション=>
{
options.MinimumSameSitePolicy = SiのTEのMo de.Noneにおいて、
});
services.ConfigureExternalCookie(オプション=>
{
// MacOSのログイン修正
SiのTEのMo de.Noneで.Saクイナモドキ科=のPodcastRSSMail O O O ns.Coマイル。
});
services.ConfigureApplicationCookie(オプション=>
{
// MacOSのログイン修正
SiのTEのMo de.Noneで.Saクイナモドキ科=のPodcastRSSMail O O O ns.Coマイル。
options.Cookie.HttpOnly = falseは、
ASP.NETコアでのAPIのURLに//抑制リダイレクト - > https://stackoverflow.com/a/56384729/54159
options.Events =新しいCookieAuthenticationEvents()
{
OnRedirectToAccessDenied =コンテキスト=>
{
もし(context.Request.Path.StartsWithSegments( "/ API"))
{
context.Response.StatusCode =(INT)(HttpStatusCode.Unauthorized)。
}
Task.CompletedTaskを返します。
}、
OnRedirectToLogin =コンテキスト=>
{
context.Response.StatusCode = 401。
Task.CompletedTaskを返します。
}
}。
});
サービス。設定 < IdentityOptions >(オプション => | |
{ | |
//パスワードの設定 | |
オプション。パスワード。RequireDigit = 偽 ; | |
オプション。パスワード。RequiredLength = 6。 | |
オプション。パスワード。RequireNonAlphanumeric = 偽 ; | |
オプション。パスワード。RequireUppercase = 偽 ; | |
オプション。パスワード。RequireLowercase = 偽 ; | |
// options.Password.RequiredUniqueChars = 6; | |
//ロックアウトの設定 | |
オプション。ロックアウト。DefaultLockoutTimeSpan = のTimeSpan。FromMinutes(30)。 | |
オプション。ロックアウト。MaxFailedAccessAttempts = 10。 | |
オプション。ロックアウト。AllowedForNewUsers = 真 ; | |
//確認メールユーザーの設定が必要 | |
もし(変換。ToBoolean(設定の [ " BlazorBoilerplate:RequireConfirmedEmail " ] ?? "偽")) | |
{ | |
オプション。ユーザー。RequireUniqueEmail = 偽 ; | |
オプション。サインイン。RequireConfirmedEmailは = 真 ; | |
} | |
}); |