Я настраиваю старый существующий веб-сайт в качестве среды с несколькими арендаторами. Одним из требований является возможность интеграции с несколькими клиентскими ADFS. Я следовал this post и успешно реализовал приложение MVC, поддерживающее несколько ADFS. Однако я все еще сталкиваюсь с проблемой, , которая не воспроизводится приложением MVC. На моем веб-сайте успешно зарегистрирован только первый зарегистрированный поставщик ADFS. Второй всегда выдает SignatureVerificationFailedException после аутентификации и возврата на мой сайт (исключение происходит на моей стороне). Это независимо от того, использую ли я app.Map (...) или app.Use (...) в конфигурации запуска OWIN.
Я попытался преобразовать свой веб-сайт в веб-приложение, но тот же результат. Я думаю, что это связано с тем, как запросы обрабатываются в WEB FORMS, который отличается от MVC.
Должен ли я обрабатывать сопоставление промежуточного ПО каким-то другим способом?
Что мне не хватает?
Или это вообще невозможно ...Сайт веб-форм ASP.NET - интеграция с несколькими ADFS с использованием OWIN KATANA
Вот моя конфигурация запуска Owin:
app.Properties["Microsoft.Owin.Security.Constants.DefaultSignInAsAuthenticationType"] = Config.ExternalAuthentication.Cookie;
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = Config.ExternalAuthentication.Cookie,
AuthenticationMode = Microsoft.Owin.Security.AuthenticationMode.Passive
});
string wreply = Config.ExternalAuthentication.Wreply;
string wtrealm = Config.ExternalAuthentication.Wtrealm;
List<Company> adfsCompanies = BL.GetCompaniesWithADFS();
app.Map("/Public/Login.aspx", configuration =>
{
foreach (Company company in adfsCompanies)
{
//configure middleware
var middleware = new WsFederationAuthenticationOptions()
{
MetadataAddress = company.ADFSMetadataUrl,
AuthenticationType = company.TenantName,
Caption = company.Name,
Wreply = wreply,
Wtrealm = wtrealm,
BackchannelCertificateValidator = null
};
//add to pipeline
configuration.UseWsFederationAuthentication(middleware);
}
});
Здесь пока мой запрос задача:
context.GetOwinContext().Authentication.Challenge(
new AuthenticationProperties { RedirectUri = callbackUrl },
provider);
response.StatusCode = 401;
response.End();
Независимо от того, что я делаю, только первое зарегистрированное промежуточное ПО ADFS будет успешным, независимо от того, какой из них. Я также попытался привязать средние к различным этапам трубопровода без успеха.
Заранее благодарим за любую помощь!
Большое спасибо, @Tratcher. Ваш ответ не дает полного решения, но он ведет меня в правильном направлении. Я дам более подробную информацию с еще одним ответом, чтобы вопрос был чистым и простым – Vladislav