【发布时间】:2021-05-28 02:06:40
【问题描述】:
我有一个 blazor 服务器端应用程序,它已经使用 Asp.net core Identity 启动并运行了一段时间。
我决定添加 OIDC,当使用它作为唯一可行的选项时,但当将两者结合时 - IsAuthenticated 始终为假,我不再收到声明。
我尝试将 DefaultScheme 设置为 IdentityConstants.ApplicationScheme 但没有帮助。
身份设置:
services.AddDefaultIdentity<ApplicationUser>(options =>
{
options.SignIn.RequireConfirmedAccount = true;
options.Password = new PasswordOptions
{
RequireDigit = true,
RequiredLength = 6,
RequireLowercase = true,
RequireUppercase = true,
RequireNonAlphanumeric = true
};
})
.AddRoles<IdentityRole<int>>()
.AddEntityFrameworkStores<ProjectsContext>();
OIDC 设置:
services.Configure<CookiePolicyOptions>(options =>
{
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddAuthentication(options => {
options.DefaultScheme = IdentityConstants.ApplicationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
.AddCookie()
.AddOpenIdConnect(options => {
options.ClientId = "myClientId";
options.ClientSecret = "myClientSecret";
options.Authority = "https://myAuthority/";
options.ResponseType = "code";
options.GetClaimsFromUserInfoEndpoint = true;
options.TokenValidationParameters.ValidIssuers = new[] {
options.Authority
};
options.CallbackPath = new PathString("/callback");
options.SignedOutCallbackPath = new PathString("/signout");
options.Events = new OpenIdConnectEvents()
{
OnRedirectToIdentityProvider = context => {
context.ProtocolMessage.AcrValues = context.Request.Query["loginmethod"];
return Task.FromResult(0);
}
};
});
当我注释掉身份设置块并进行 OIDC 身份验证时 - 我得到了声明和正确的标志。当它包含在内时 - 我没有。
编辑: 当我在 AppOpenIdConnect 选项中添加以下行时,OIDC 登录有效并且我得到了声明。但是,当使用身份登录时,我没有登录并声称...
options.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
【问题讨论】:
标签: asp.net-identity openid-connect