Недавно у меня появилось новое требование, в котором мне нужно разрешить пользователю проходить аутентификацию в моем приложении IDM SAP. Ранее мне приходилось интегрировать свое приложение с ADFS. Для этого я использовал Ws Federation, и приложение работает на Asp Net Core. Аутентификация с помощью ADFS работает просто отлично, при запуске я заставляю мое приложение получать XML-файл метаданных с сервера Idp. Затем я перенаправляю пользователя на страницу входа в Idp, он проверяет, сработала ли аутентификация, возвращает ответ, а затем открывает мое приложение.
Теперь я провел небольшое исследование, чтобы понять, как я могу это сделать. то же самое с IDM SAP. Я немного запутался, когда увидел статьи, сравнивающие SAML с WS Federation. Что делает меня еще более запутанным, так это то, что клиент уже предоставил свой файл метаданных xml, и он очень похож на другой, использующий ADFS.
Вот как я реализовал Ws Federation:
services
.AddAuthentication(sharedOptions =>
{
sharedOptions.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
sharedOptions.DefaultChallengeScheme = WsFederationDefaults.AuthenticationScheme;
})
.AddWsFederation(options =>
{
options.Wtrealm = appSettings.Adfs.Wtrealm;
options.MetadataAddress = appSettings.Adfs.MetadataAddress;
options.RequireHttpsMetadata = false;
})
.AddCookie();
URL-адрес Idp находится в моем файле appSettings.
Мне пришло в голову, что я должен попытаться прочитать этот новый XML-файл, предоставленный из локальной папки, но это свойство "MetadataAddress ", кажется, всегда ожидает только URL-адреса. Пользователь IDM Sap уже сказал, что не будет предоставлять свой XML-файл, поэтому мне придется всегда читать из локального XML-файла.
Это не сработало, поэтому теперь я пытаюсь выяснить,Мой вариант будет заключаться в реализации более одного протокола в моем приложении.
До сих пор я нашел эту библиотеку, которая, кажется, является решением https://github.com/Sustainsys/Saml2/blob/master/Samples/SampleAspNetCore2ApplicationNETFramework/Startup.cs
Я застрял при попытке установитьXML-файл в методе StartUp. Это то, что я пытаюсь:
.AddSaml2(options =>
{
options.SPOptions.EntityId = new EntityId("mine.metadata.xml");
options.IdentityProviders.Add(
new IdentityProvider(
new EntityId("mine.metadata.xml"), options.SPOptions)
{
LoadMetadata = true
});
options.SPOptions.ServiceCertificates.Add(new X509Certificate2(@"mine.metadata.xml"));
})
Возвращает ошибку при попытке установить сертификат службы о том, что не удалось найти указанный файл.
Кроме того, давайте представим, что я установил конфигурацию. Как мне перенаправить пользователя на страницу входа в IDM Sap?
Может ли кто-нибудь дать какой-нибудь совет или руководство, чтобы я мог создать лучшее решение, которое работает в обоих случаях?