. Net Ядро с WS-Federation генерирует большие wctx - PullRequest
0 голосов
/ 18 апреля 2020

Я пытаюсь узнать, как использовать WS-Federation в. NET основном приложении. Я пытаюсь выполнить базовый c шаг, чтобы мое клиентское приложение перенаправило на службу аутентификации (определено в моем файле FederationMetadata. xml), но когда я пытаюсь получить доступ к контроллеру, требующему аутентификации [url в этом случае - http://localhost/STSAwareApp/Test] , мой URL перенаправления становится слишком большим, чтобы его можно было использовать (я получаю 404.15, строка запроса слишком велика).

Поскольку я новичок в WS-Federation, я предполагаю, что у меня возникла проблема с конфигурацией при запуске:

    public void ConfigureServices(IServiceCollection services)
    {
        IdentityModelEventSource.ShowPII = true;
        services.AddControllersWithViews();

        services.AddAuthentication(sharedOptions =>
        {
            sharedOptions.DefaultChallengeScheme = WsFederationDefaults.AuthenticationScheme;
            sharedOptions.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
            sharedOptions.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
        }).AddWsFederation(authenticationScheme: "WsFederation", displayName: "Test WS-Fed", options =>
        {
             options.Wtrealm = "http://localhost/STSAwareApp/Test";
             options.MetadataAddress = "http://localhost/STSAwareApp/files/FederationMetadata.xml";
             options.RequireHttpsMetadata = false;
        }).AddCookie(options =>
        {
            options.Cookie.Name = "TestStsAuth";
            options.Cookie.HttpOnly = true;
        });

        services.AddLogging(
             builder =>
             {
                 builder.AddFilter("Microsoft", LogLevel.Trace)
                           .AddFilter("System", LogLevel.Trace)
                           .AddConsole();
                    });
            }
    }

Вот пример получаемого URL-адреса перенаправления сгенерировано (только для полноты): http://localhost: 80 / STSAwareApp / Test? wtrealm = http% 3A% 2F% 2Flocalhost% 2FSTSAwareApp% 2FTest & wa = wsignin1.0 & wreply = http% 3A% 2F% 2Flocalhost% 2FSTSAignApp% -wsfed & wctx = CfDJ8O7dpxEY6MBCgxct4kkpp1gFIwYvsJN7p6zOuAiyltKmCqff605h1uCh7ZBNM6WneU_7XlxHKAt7CYmBdXG_e19L8z-p64d21gJjDJCdjOkfNieQWNRSPQPGZDUL8eBEVqs4vWaKN-sof8lnblDbySiP8NJPR945c8IYqRwaf7ZBZ-_IxoWZLN_OgMOgFnU5XjtDeUfFCcHh0dtGwSc4PVDPxhKIpxb3JyIEMBRA19qZpudqQEylX6WHek5LkNK1IDbWDv2ll9F5HCJSQxvpVDrLw62dBfF6IDNg3Ar8q2Yr_bpV1gA1RR7kHp3Gs4soxfZENfvi96qkPJs4ZOqvUYjRQjho34Lkc9VH5q2w7n4Oty6abFXs_jeDQQN7ZyFBGQrb-wxBZBEuvNJAFp-ckhGVCeKrtdmXS4bVAvbEtPAEtLHXJpv82Y843_UVCeAQycMjmz2stIovI-HiKAWwCkoc03J7gOlTEwyrn1cR-Ia3QWN4mPN2ncqxW5e80kamNDIDmRxiWoox1Z6x5SATSIO3KergXc7VE1G8-2gLicc8_flyLR6NXUAdDRZTnxGzChHzf2L1eqjm0K_PvioAdqJNuFDlFMeGyfar EbXahAqpchuDvSgolSEKg GO -uLw5GEdCS-5cX_Ztt3bAjbXzkPMdhzYbXFWTDdYTMMMta18nhzgAk5CIzDvo1BmniWGdwUy-lAWm9BoNd4TsroQa-F8NJ86K4sixQIqRqQ-Д-Bf_672hHbIkY1QEEe8tqTH-1Qwn9K5RY5sVFQLu0Ec4bp0Zj2EDis-GAtMxhp6761MciYjjhqgORhe3gsLeej5GEY0AErXUOCxdghQKs-waLQtNQ2F4Xn226DYp6NVn8bLs5pu4mFblaWRn9cVzKPHUosRT9BjKqbnLpCCC0A4cOXe c -G5znWLOXa6G4qsZjFl5h79MwStDnzP6GU2Wg6TaLG83783f6bRsJwX8blc1CMEjByphkpZp-VdR6FytLXvu4bh8gQQo2K3ad76pNlF8HnA4y1f0p86A82i2IPPDrOeW6YFupzZRITSFz-JvhjAZbkSzu26bgqgHNVTIz1ebu9mHIMQzGzpAu0rFIl16HszR7Omxn8TljADTCCLasQyLNRUIXSA5teeowULetXEv_rmOr6ANkk0kQ-q3pPuiOzkA0aFV6g1jYQ-JvS9K817IafEes7akoDrPbeHEmvD5sWzxERlMtnEQtYwcrPiOroWXIh1QgLjqUgTxtagWmkzoBWVM5PnNmMVkk0alyTgZKOomTcZN8ePkLRp4sY0d0D_uqb0Rn_s757Nb-oDztAz6SLOkCzWnPDif3eIAFTZy24v_oYr3SOFfvM2J-_t0kg3zlRovg25_bPPSs-qyfrMMBSbMammB5e7SKbIna4dPhMdv93Vm6I2GwJ8-VY-pAuBT4MQXPLD1VwdiBT3hWsZOoeMUl1JuL7B9pJDAMBNO2OUTaRb7dajP3VsA09XSgVrBeZ1Hvk733TrzFVoR5KQgHS4qw9cxquRmqP2XfEYTQocB-mUL4b-n0h3RN2qzaHn_VH2pZDV842YcanF4SZ8dDPB4EnLCWU7pf67IwvruInv u8MXg01xNoURh6rKLmSwikbgsEM7Es87RMQSEvar1QixBId9XMO1YiHVvGAdJoivUveJSO1T8Aj4A2xFllBjtD4SfnJc5UDTQ7UxGnVmIVw6pwS9N26U_u09n-T4j5R-ZVQyCNgSjoNRg-3jmMatXcAhT4vJ gO -kRuzMiBKnavJ7EPyS8Th8KUK0ws1tQYQKmQQGvd7DT_GRC0wXT8HrTZ1uxTmxxDibzyCLxJZmulLHPcYaXwpWw6j56vOxgCrGy-3L5GtfnXNN1UdE3QzbE6_XL3xF8B3uD6Z5g5ZB_ZR4Q0QS0K9Kb6guaAtxEJYKc2eE2DZ2OpMNtyw5imNYt9crd5J4mB05GR7c0Nur2vqzk1mGM56_0IQD9L4HV4fXNmQuprEpwNZ41NyW-bhcVS30rZn73WL c -XBlNWhCrE_HiTWzCDOn9juofX7_C2AcQypJt-aweXEN5uxRWPp_W9qFJNblrkjzAEr3o7_dylYLYTstOvW4dYuIE4WlTUiJdJF3Iy02whGQUpclOINsxZ3wotkKY2JsnUzsolSeIfWe-es8soGOkPnDSthgjRbpTxltmVz10L0kAo4zckz4HvhEmziWPsGWZH1UVtRKLniT60qq9PPxeuu_dsodov-ByanyRwMHlkzCJhmSBDE0

1013 * Я в предположении, что URL-адрес не только неправильно, потому что wctx слишком длинный, но он должен пытаться перенаправить на другой сервис [http://localhost/STS/V1] , он пытается на исходный URL с параметрами федерации в строке запроса. Я думаю, что wctx должен быть меньше, потому что даже если я увеличу размер моих URL-адресов, он просто будет расти.

1 Ответ

0 голосов
/ 20 апреля 2020

Проблема заключалась в том, что документ FederationMetadata. xml был настроен неправильно. Не совсем уверен, что было не так, но вместо попытки получить действительный документ xml было проще обновить свойство Configuration в WsFederationOptions. Прилагается обновленный вызов при запуске:

public void ConfigureServices(IServiceCollection services)
{
    IdentityModelEventSource.ShowPII = true;
    services.AddControllersWithViews();

    services.AddAuthentication(sharedOptions =>
    {
        sharedOptions.DefaultChallengeScheme = WsFederationDefaults.AuthenticationScheme;
        sharedOptions.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
        sharedOptions.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
    }).AddWsFederation(authenticationScheme: "WsFederation", displayName: "Test WS-Fed", options =>
    {
        WsFederationConfiguration configuration = new WsFederationConfiguration();
        configuration.TokenEndpoint = "http://localhost/STSSpike/V1";
        options.Configuration = configuration;
        options.Wtrealm = "http://localhost/STSAwareApp/Test";
    }).AddCookie(options =>
    {
        options.Cookie.Name = "TestStsAuth";
        options.Cookie.HttpOnly = true;
    });

    services.AddLogging(
        builder =>
        {
            builder.AddFilter("Microsoft", LogLevel.Trace)
                   .AddFilter("System", LogLevel.Trace)
                   .AddConsole();
        });
}

Предполагается, что это довольно локализованная проблема, поэтому может потребоваться закрыть.

...