Аутентификация ASP.Net Core SAML
Я пытаюсь добавить аутентификацию SAML 2.0 в решение ASP.Net Core. Я не могу найти документацию по этому вопросу, поэтому я не уверен, с чего начать. Вероятно, есть документация, но я не хочу тратить 3 дня на то, чтобы стать экспертом по этому вопросу.
Из того, что я вижу, ASP.Net Core кое-что изменил из старых сборок/пространств имен OWIN. Для упрощения реализации SAML 2.0 существуют сторонние библиотеки, такие как Kentor.AuthServices.
Я не уверен, как объединить это с ASP.Net 5 RC 1/ASP.Net Core. Например, используя таблицы AspNet * в SQL.
ASP.Net 5 RC 1 поставляется с несколькими библиотеками для реализации аутентификации (клиента).
Например:
Реализация этих задач - вызов простого метода расширения в Startup.cs
:
app.UseIdentity()
.UseFacebookAuthentication(new FacebookOptions
{
AppId = "ID",
AppSecret = "KEY"
})
.UseGoogleAuthentication(new GoogleOptions
{
ClientId = "ID",
ClientSecret = "SECRET"
})
.UseTwitterAuthentication(new TwitterOptions
{
ConsumerKey = "KEY",
ConsumerSecret = "SECRET"
});
Как только это будет сделано, образец проекта ASP.Net автоматически отобразит социальные кнопки для входа/управления учетной записью:
![Социальные кнопки]()
В базовом коде поставщики проверки подлинности извлекаются с помощью var otherLogins = _signInManager.GetExternalAuthenticationSchemes().Where(auth => userLogins.All(ul => auth.AuthenticationScheme != ul.LoginProvider)).ToList();
. Это означает, что провайдеры аутентификации зарегистрированы где-то, что делает их доступными, вызывая _signInManager.GetExternalAuthenticationSchemes()
.
Как реализовать проверку подлинности SAML 2.0 в ASP.Net 5 RC1/ASP.Net Core?
Ответы
Ответ 1
Насколько я знаю, в ASP.NET Core нет реализации SAML2. Я планирую сделать ASP.NET Core Middleware для Kentor.AuthServices (я сопровождаю), но он пока только планирует.
Теперь есть рабочий прототип промежуточного программного обеспечения ASP.NET Core по адресу https://github.com/KentorIT/authservices/pull/489. Он будет включен в официальный релиз, когда будут добавлены тесты.
Также важно знать, что хотя такое промежуточное программное обеспечение будет совместимо с моделью безопасности ASP.NET Core, оно будет работать только на полной .NET Framework, а не на .NET Core. Причина в том, что SignedXml и поддержка SAML2 в System.IdentityModel еще не доступны в .NET Core.
Ответ 2
Это, вероятно, в основном обновленная версия ответа Андерса Абеля, но:
Я использовал https://github.com/Sustainsys/Saml2. У них есть пакет nuget с 36k загрузками, который называется Sustainsys.Saml2.AspNetCore2.
У них есть полезный пример приложения ядра .net, использующего его, который также использует идентификатор ядра .net здесь: https://github.com/Sustainsys/Saml2/tree/master/Samples/SampleAspNetCore2ApplicationNETFramework (посмотрите на их startup.cs
а также их страницы бритвы внешнего логина для деталей реализации).
Они также проводят хороший тестовый IdP здесь: https://stubidp.sustainsys.com. Таким образом, вы можете подтвердить, что конечная точка ACS (Assertion Consumer Service) вашего приложения работает вместе с вашей страницей входа и еще чем-то.
Они упоминают на своем github: "Библиотека ранее называлась Kentor.AuthServices".
Ответ 3
ITfoxtec Identity Saml2 теперь поддерживает .NET Core 2.1.
Проект: https://itfoxtec.com/IdentitySaml2 и примеры кода: https://github.com/ITfoxtec/ITfoxtec.Identity.Saml2/tree/master/test
Для реализации SAML 2.0 в проекте ASP.NET MVC Core 2.1 необходим следующий пакет NuGet: https://www.nuget.org/packages/ITfoxtec.Identity.Saml2.MvcCore/