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

ASP.NET 5/MVC 6 On-Premises Active Directory

Для более ранних версий шаблонов приложений .NET, то есть 4.5.2, вы можете создать новое веб-приложение, изменить аутентификацию на "Рабочие и школьные учетные записи" и выбрать "On-Premises". В шаблонах веб-приложений .NET 5 опция "Рабочие и школьные учетные записи" не имеет опции "On-Premises".

Как вы узнаете об аутентификации через локальный Active Directory (LDAP) в .NET 5 с использованием Identity ASP.NET. Чтобы быть ясным, я не ищу проверку подлинности Windows, я хочу, чтобы пользователи вводили свои учетные данные и обрабатывали аутентификацию против локального AD. IOW, пользователям не нужно регистрироваться на компьютере с Windows, они могут получить доступ со своих мобильных устройств и т.д.

Я искал часы безрезультатно, но я не удивлюсь, если ответ там где-нибудь. Любая помощь приветствуется!

4b9b3361

Ответ 1

Аутентификация LDAP и On-Premises - это не одно и то же, поэтому, IMHO, режим On-Premises, это стало "готовым" вариантом, а также потому, что Microsoft практически не стремится к переходу на Лазурное облако:)

Режим On-Premises (как вы можете видеть здесь) - это способ использования AD как поставщика федерации (проверьте это на SF), например, Twitter или Facebook, если вы предпочитаете; вы можете использовать ADFS локально (если ваш AD поддерживает его) или в облаке (с Azure).

Если вы ищете аутентификацию LDAP, самый простой способ работы - использовать режим "Индивидуальная учетная запись пользователя" (который похож на старые формы обучения в школе) и использовать AD как источник правды для пользовательского auth с чем-то вроде (проверьте эту статью SO):

    using System.Security;
    using System.DirectoryServices.AccountManagement;
    public struct Credentials
    {
        public string Username;
        public string Password;
    }

    public class Domain_Authentication
    {
        public Credentials Credentials;
        public string Domain;
        public Domain_Authentication(string Username, string Password, string SDomain)
        {
            Credentials.Username = Username;
            Credentials.Password = Password;
            Domain = SDomain;
        }
        public bool IsValid()
        {
            using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, Domain))
            {
                // validate the credentials
                return pc.ValidateCredentials(Credentials.Username, Credentials.Password);
            }
        }
    }

В любом случае, если вы работаете с гетерогенными системами, если вы предпочитаете работать с чем-то более "безопасным", я предлагаю вам использовать OAuth2, который, как и внешняя поддержка в MVC 6.

Update

Если вы хотите использовать идентификатор ASP.NET с LDAP, вы можете создать свой собственный пользовательский поставщик хранилища, как это было прекрасно описано здесь. Это не сложно, но реализовать его можно довольно долго.

Ответ 2

Отсутствует опция на месте, так как .NET Core не будет поддерживать WS-Fed во время доставки. Даже в старых версиях .NET on-permises не использовали LDAP, он использовал WS-Fed для связи с сервером ADFS.

У очень старых версий ASP.NET был провайдер членства в AD, но он был проблематичным с точки зрения безопасности и не появился в ASP.NET 4.0

Вы можете реализовать собственный поставщик членства, но .NET Core не имеет классов LDAP/System.DirectoryService, поэтому вам придется делать все это с нуля, включая создание библиотеки для разговора с LDAP через сокеты.

TL;DR: вы не можете.

Ответ 3

Я не знаю никаких шаблонов или чего-то еще, но я настраиваю свой собственный поставщик удостоверений с помощью oAuth2 и Owin в соответствии с этим руководством.

http://bitoftech.net/2015/02/16/implement-oauth-json-web-tokens-authentication-in-asp-net-web-api-and-identity-2/

Затем для проверки подлинности против активного каталога я создал свой собственный пользовательский магазин и usermanager, и я делаю это вручную, используя классы UserPrincipal и PrinipalContext из сборников Directory.Masnagement.