【发布时间】:2022-01-15 20:07:11
【问题描述】:
我的项目的认证(Cookie)设置如下,
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
.AddCookie(options =>
{
options.ClaimsIssuer = "xxx.admin";
options.Cookie.HttpOnly = true;
options.Cookie.SecurePolicy = CookieSecurePolicy.SameAsRequest;
options.LoginPath = "/Login/Index/";
options.AccessDeniedPath = "/Account/Unauthorized/";
options.Cookie.SameSite = SameSiteMode.Strict;
});
我在不同的项目中配置了第二个身份验证选项(OpenIdConnect),如下所示,
services.AddRazorPages().AddMvcOptions(options =>
{
var policy = new AuthorizationPolicyBuilder().RequireAuthenticatedUser().Build();
options.Filters.Add(new AuthorizeFilter(policy));
}).AddMicrosoftIdentityUI();
services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme).AddMicrosoftIdentityWebApp(options =>
{
Configuration.Bind("AzureActiveDirectoryConnection", options);
options.Events ??= new OpenIdConnectEvents();
options.Events.OnTokenValidated += OnTokenValidated;
options.Events.OnTicketReceived += OnTicketReceived;
//options.Events.OnRedirectToIdentityProvider += OnRedirectToIdentityProvider;
});
现在,我需要将它们组合起来以在我的应用中支持多种身份验证类型。我该怎么做?
【问题讨论】:
-
this 能解决你的问题吗?
-
如何理解“不同的项目”?一个解决方案有 2 个项目?那么什么是“组合它们”?对不起,我真的不清楚
-
@TinyWang 他们在不同的解决方案中(每个都有 1 个项目)并且组合意味着在我的应用程序中支持两种不同的身份验证。
-
那么,您想将两个项目合二为一吗?或者您想在第一个项目中添加 OpenIdConnect 身份验证?
-
我不确定,因为您没有在这里说出您的确切问题。所以也许你可以先参考this answer?顺便说一句,微软也提供了关于如何使用multi-authentication的官方文档。
标签: asp.net-core authentication microsoft-identity-web