Подтвердить что ты не робот

Аутентификация 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?

4b9b3361

Ответ 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".