• Как добавить авторизацию через Active Directory в приложение, в котором уже есть авторизация на основе JWT?

    @rv82 Автор вопроса
    ASP.NET Core разработчик
    Решение, как оказалось, очень простое и было найдено по горячим следам. Сложнее было настроить сеть с тестовым доменом AD. Только сейчас дошли руки написать ответ. Итак:

    1. Добавить к проекту nuget-пакет Microsoft.AspNetCore.Authentication.Negotiate.

    2. В файл Startup.cs, в методе ConfigureServices, вслед за services.AddAuthentication(...).AddJwtBearer(...) добавить .AddNegotiate(). Аутентификация JwtBearer остаётся по умолчанию. Больше никаких настроек выполнять не требуется!

    3. В контроллере, отвечающем за аутентификацию (в нашем случае AccountController) добавляется метод, например LoginByActiveDirectory, с атрибутом [Authorize(AuthenticationSchemes = NegotiateDefaults.AuthenticationScheme)]. Атрибут указывает, что для доступа к этому методу нужна аутентификация через AD.

    4. Перед запуском приложения необходимо задать переменную окружения KRB5_KTNAME с указанием пути к keytab-файлу. Этот файл создаётся на контроллере домена.

    PS. Если нужны подробности, то могу набросать более развёрнутую статейку с описанием процесса настройки тестового домена и создания keytab-файла на примере Debian и Samba.
    Ответ написан
    1 комментарий