Ошибка при входе в систему аутентификации по Active Directory с ASP. NET Core по LDAP - PullRequest
0 голосов
/ 12 апреля 2020

Я реализую ASP. NET Базовый проект и пытаюсь аутентифицировать вход пользователя через LDAP в Active Directory. Я использую эту ссылку https://www.brechtbaekelandt.net/blog/post/authenticating-against-active-directory-with-aspnet-core-2-and-managing-users

, чтобы реализовать аутентификацию в Active Directory с ASP. NET Core. То, что я пробовал в appsettings.json, выглядит следующим образом:

{
  "AllowedHosts": "*",
  "ConnectionStrings": {
    "CSDDashboardContext": "Server=xxxx;Database=CSS;Trusted_Connection=True;"
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },

  "LdapSettings": {
    "ServerName": "par.fr", 
    "ServerPort": 389, 
    "UseSSL": false,
    "Credentials": {
      "DomainUserName": "par\\koli-h",
      "Password": "asdq/1998"
    },
    "SearchBase": "CN=Users,DC=par,DC=fr",
    "ContainerName": "CN=Users,DC=par,DC=fr", 
    "DomainName": "par.fr",
    "DomainDistinguishedName": "DC=par,DC=fr",
    "SearchProperty": "samAccountName" //????
  }
}

Теперь моя проблема - после запуска проекта и ввода имени пользователя: koli-h и pass: asdq / 1998 система показывает мне неверное имя пользователя или пароль. Мое настоящее имя пользователя и пароль на сервере - koli-h и asdq / 1998. Однако, если я изменю своего пользователя в коде, например, на koli-ha (добавив символ, чтобы сделать имя пользователя неправильным) после запуска проекта, система выдаст мне ошибку

Неверные учетные данные

Буду признателен, если кто-нибудь подскажет мне, в чем проблема, что я не могу войти в систему.

Ответы [ 2 ]

1 голос
/ 27 апреля 2020

Большое спасибо за вашу помощь. Проблема была в том, что я должен указать «mydomain.com» в новом PrincipalContext (ContextType.Domain, «par»)), например par.com.

1 голос
/ 12 апреля 2020

Вопреки тому, что указано в той записи блога, на которую вы ссылались (которой 2 года), пространства имен System.DirectoryServices и System.DirectoryServices.AccountManagement фактически поддерживаются в .NETStandard 2.0 и, следовательно, могут использоваться в. NET Core 2.x / 3.x.

Проверьте соответствующую страницу Nuget:

https://www.nuget.org/packages/System.DirectoryServices.AccountManagement/4.7.0

И, таким образом, вы может очень легко использовать «обычный» код для проверки учетных данных пользователя:

using System.DirectoryServices.AccountManagement;

// set up domain context
using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "par"))
{
    // validate the user's credentials
    if (ctx.ValidateCredentials(userName, password)
    {
        // credentials are OK --> allow user in
    }
    else
    {
        // credentials aren't OK --> send back error message
    }
} 
...