Я настроил. Net Ядро, чтобы я мог успешно войти в систему и получить доступ к MVC контроллеру API за атрибутом Microsoft.AspNetCore.Authorization [Authorize()]
и увидеть зарегистрированное удостоверение.
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication()
.AddAzureADB2C(options => Configuration.Bind("AzureAdB2C", options))
.AddAzureADB2CBearer(options => Configuration.Bind("AzureAdB2C", options));
services.AddAuthorization(options =>
{
options.DefaultPolicy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.AddAuthenticationSchemes(AzureADB2CDefaults.AuthenticationScheme, AzureADB2CDefaults.BearerAuthenticationScheme)
.Build();
});
services.AddControllers();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.Use(async (context, next) =>
{
Console.ForegroundColor = ConsoleColor.Yellow;
Console.Write("Auth Info: ");
Console.ResetColor();
Console.WriteLine(context.User.Identity.IsAuthenticated ? "Logged In" : "Anon");
await next();
});
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
app.UseServiceStack(new AppHost
{
AppSettings = new NetCoreAppSettings(Configuration)
});
}
}
Затем я добавил servicestack и могу получить доступ к конечным точкам анонимно.
Наконец, я добавил NetCoreIdentityAuthProvider, чтобы связать servicestack с идентификатором .netcore.
Plugins.Add(new AuthFeature(() => new AuthUserSession(),
new IAuthProvider[] { new NetCoreIdentityAuthProvider(AppSettings) { }}));
- С атрибутом Microsoft.AspNetCore.Authorization
[Authorize()]
я просто получаю анонимный вызов. - С атрибутом ServiceStack
[Authenticate()]
меня перенаправляют на Account/Login?ReturnUrl=%2f
Я ожидал что я могу использовать базовую аутентификацию as pnet и комбинировать ее со стеком служб. Разве это не так?