Федерация WS не перенаправляется с Ocelot - PullRequest
0 голосов
/ 16 апреля 2019

Мы находимся в среде .Net Core 2.2, в которой используется единый вход на основе WS-Federation. При переходе на https://localhost:5001/api/app/Method - ожидается, что нас перенаправят на сайт SSO для входа в систему, но получит ошибку 500.

ocelot.json:

{
"ReRoutes": [
    {
        "DownstreamPathTemplate": "/api/app/{catchAll}",
        "DownstreamScheme": "http",
        "DownstreamHostAndPorts": [
                {
                    "Host": "localhost",
                    "Port": 5002
                }
            ],
        "UpstreamPathTemplate": "/api/app/{catchAll}",
        "UpstreamHttpMethod": [ "GET", "POST"],
        "AuthenticationOptions": {
            "AuthenticationProviderKey": "TestKey"
        }
    },
],
"GlobalConfiguration": {
    "BaseUrl": "https://localhost:5001"
    }
}

Program.cs:

 public static void Main(string[] args)
    {
        new WebHostBuilder()
           .UseKestrel()
           .UseContentRoot(Directory.GetCurrentDirectory())
           .ConfigureAppConfiguration((hostingContext, config) =>
           {
               config
                   .SetBasePath(hostingContext.HostingEnvironment.ContentRootPath)
                   .AddJsonFile("appsettings.json", true, true)
                   .AddJsonFile($"appsettings.{hostingContext.HostingEnvironment.EnvironmentName}.json", true, true)
                   .AddJsonFile($"{hostingContext.HostingEnvironment.ApplicationName}/ocelot.json")
                   .AddEnvironmentVariables();
           })
           .ConfigureServices(s => {
               s.AddAuthentication().AddWsFederation("TestKey", options => {
                    options.MetadataAddress = "https://sso-site/FederationMetadata/2007-06/FederationMetadata.xml";
                    options.Wtrealm = "https://localhost:5001/";
                    options.Events.OnMessageReceived = ctx => {

                        return Task.CompletedTask;
                    };
                });
               s.AddOcelot();
           })
           .ConfigureLogging((hostingContext, logging) =>
           {
               Console.WriteLine("logging happened");
               //add your logging
           })
           .UseIISIntegration()
           .Configure(app =>
           {
               app.UseOcelot().Wait();
           })
           .Build()
           .Run();
    }

Какие-нибудь предложения относительно того, что мы можем делать неправильно? Есть некоторые мысли, что WS-Fed не поддерживает аутентификацию в Ocelot. Мы следовали примеру конфигурации.

...