Невозможно изменить пользовательский интерфейс WS-Federation в .NET Core - PullRequest
0 голосов
/ 17 июня 2019

У меня есть .NET Core Web App с Angular (созданный в Visual Studio 2019).Мне удалось добавить аутентификацию WS-Federation, как описано в документах Microsoft .Для простоты я использую приложение по умолчанию, которое вы получаете при выборе Индивидуальной аутентификации.Однако WS-Federation - единственный механизм аутентификации, который мне нужно поддерживать.Когда я нажимаю на защищенный / авторизованный URL (https://localhost:5001/fetch-data в моем случае), я получаю возможность локального входа в дополнение к использованию WS-Federation.local and WS-FED

Я хочу, чтобы мое приложение по умолчанию использовало WS-Federation, если пользователь не аутентифицирован.Никакая другая опция для локальной учетной записи не должна быть разрешена.Я пробежал приложение по умолчанию, и я не вижу страницу, на которой можно перейти к редактированию.URL, который отображается на этой странице входа в систему: (https://localhost:5001/Identity/Account/Login?ReturnUrl=%2Fconnect%2Fauthorize%2Fcallback%3Fclient_id%3DWebApplication12%26redirect_uri%3Dhttps%253A%252F%252Flocalhost%253A5001%252Fauthentication%252Flogin-callback%26response_type%3Did_token%2520token%26scope%3DWebApplication12API%2520openid%2520profile%26state%3D17edd317f7ff472fb4001668388e75e0%26nonce%3D97430e396e604e90bb6c560633c0ecca)

Похоже, что представления должны находиться под каким-либо путем Identity / Account, но я не вижу его ни в Angular Client App, ни в .NETCore.

Как сделать так, чтобы мое приложение автоматически использовало WS-Fed по умолчанию?

Startup.cs

using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.SpaServices.AngularCli;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using WebApplication12.Data;
using WebApplication12.Models;

namespace WebApplication12
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddDbContext<ApplicationDbContext>(options =>
                options.UseSqlServer(
                    Configuration.GetConnectionString("DefaultConnection")));

            services.AddDefaultIdentity<ApplicationUser>()
                .AddEntityFrameworkStores<ApplicationDbContext>();

            services.AddIdentityServer()
                .AddApiAuthorization<ApplicationUser, ApplicationDbContext>();

            services.AddAuthentication()
                .AddIdentityServerJwt()
                .AddWsFederation(options =>
                {
                    // MetadataAddress represents the Active Directory instance used to authenticate users.
                    options.MetadataAddress = "https://fqdn_adfs/federationmetadata/2007-06/federationmetadata.xml";

                    // Wtrealm is the app's identifier in the Active Directory instance.
                    // For ADFS, use the relying party's identifier, its WS-Federation Passive protocol URL:
                    options.Wtrealm = "https://localhost:5001/";

                });
            services.AddMvc(options => options.EnableEndpointRouting = false);

            // In production, the Angular files will be served from this directory
            services.AddSpaStaticFiles(configuration =>
            {
                configuration.RootPath = "ClientApp/dist";
            });
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseDatabaseErrorPage();
            }
            else
            {
                app.UseExceptionHandler("/Error");
                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                app.UseHsts();
            }

            app.UseHttpsRedirection();
            app.UseStaticFiles();
            app.UseSpaStaticFiles();

            app.UseAuthentication();
            app.UseIdentityServer();

            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller}/{action=Index}/{id?}");
            });

            app.UseSpa(spa =>
            {
                // To learn more about options for serving an Angular SPA from ASP.NET Core,
                // see https://go.microsoft.com/fwlink/?linkid=864501

                spa.Options.SourcePath = "ClientApp";

                if (env.IsDevelopment())
                {
                    spa.UseAngularCliServer(npmScript: "start");
                }
            });
        }
    }
}
...