Как использовать идентификационный сервер для аутентификации пользователей активного каталога? - PullRequest
0 голосов
/ 20 марта 2020

Я хочу использовать идентификационный сервер для аутентификации и авторизации моих пользователей. Я хочу только для ресурса пользователей использовать пользователей активных каталогов и для ролей и т. Д. c Я хочу использовать от asp. net личность.

Также я не хочу Для аутентификации используйте windows аутентификацию.

Я использую сервер идентификации 4 и asp. net core 3.2 .

services.AddIdentityServer().AddDeveloperSigningCredential()
    //.AddTestUsers(Config.GetUsers())
    .AddInMemoryIdentityResources(Config.GetIdentityResources())
    .AddInMemoryClients(Config.GetClients());

1 Ответ

0 голосов
/ 20 марта 2020

Прежде всего, вам необходимо установить пакет ниже, чтобы использовать функции ActiveDirectory.

Install-Package Microsoft.Windows.Compatibility 

Во-вторых, вам необходимо реализовать IResourceOwnerPasswordValidator и проверить пароль пользователя с ActiveDirectory в этом.

public class ActiveDirectoryResourceOwnerPasswordValidator : IResourceOwnerPasswordValidator
{
    public Task ValidateAsync(ResourceOwnerPasswordValidationContext context)
    {
        const string LDAP_DOMAIN = "exldap.example.com:5555";

        using (var pcontext = new PrincipalContext(ContextType.Domain, LDAP_DOMAIN, "service_acct_user", "service_acct_pswd"))
        {
            if (pcontext.ValidateCredentials(context.UserName, context.Password))
            {
                // user authenticated and set context.Result
            }
        }

        // User not authenticated and set context.Result
        return Task.CompletedTask;
    }
}

Затем зарегистрируйте его на Startup.cs

services.AddSingleton<IResourceOwnerPasswordValidator, ActiveDirectoryResourceOwnerPasswordValidator>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...