0

Я ищу, чтобы переключиться на Active Directory для аутентификации и ролей, но я не уверен, что использовать для них.Какой из них следует использовать для проверки подлинности Active Directory?

Для членства, я пришел через эти два варианта аутентификации:

  1. ActiveDirectoryMembershipProvider
  2. LdapMembershipProvider

Каковы различия? Имеет ли преимущество преимущество над другим? Мне просто нужно проверить подлинность пользователя и узнать, в каких ролях они находятся, не более того.

Для ролей я даже менее понятен, что использовать.

Спасибо!

+0

Будут ли все ваши пользователи находиться в сети, к которой они обращаются на вашем сайте? Есть ли причина, по которой вы хотите использовать аутентификацию форм вместо интегрированной проверки подлинности Windows? – mason

+0

Все они будут в одной сети (корпоративная интрасеть) – chobo

+0

Многие системы могут интегрироваться с LDAP. –

ответ

1

Для проверки я считаю, что проще просто сделать что-то вроде этого:

using System.DirectoryServices.AccountManagement; 

bool flag = false; 
try 
{ 
    using (PrincipalContext principalContext = new PrincipalContext(ContextType.Domain)) 
    { 
     flag = principalContext.ValidateCredentials("UserId", "Password"); 
    } 
} 
catch (PrincipalServerDownException) 
{ 
} 

Чтобы получить роли, которые вы можете посмотреть на этот ответ:

https://stackoverflow.com/a/6247905/67566

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

Есть различные варианты на инстанцировании PrincipleContext, так что вы можете посмотреть по адресу:

http://msdn.microsoft.com/en-us/library/system.directoryservices.accountmanagement.principalcontext(v=vs.110).aspx

+0

Требуется ли настройка web.config? Этот код просто входит в файл global.asax? – chobo

+0

Вау ... Я ввел код, и он действительно работает. Казалось, слишком просто работать. Понял, что мне придется писать подклассы и подключать вещи в файле web.config. – chobo

+0

MS упростил аутентификацию. Раньше это была большая работа. –

0

Мое решение не использовать либо поставщика членства вы предложили. Вместо этого используйте встроенную проверку подлинности Windows. Вам не нужно беспокоиться о входе и выходе пользователей в систему, как это делается через SPNEGO. Пользователи просто получают доступ к сайту и автоматически регистрируются (с некоторыми браузерами, в противном случае он запрашивает у них имя пользователя/пароль и обрабатывает это для вас). Затем вы можете выяснить, какой пользователь зарегистрирован через свойство User.Identity.Name, доступное на любом кодовом экране.

Это самое простое решение, которое вы найдете, так как оно не требует модификации каких-либо файлов кода или конфигурации. Просто проверьте простой ящик в IIS, и вам хорошо идти.

+0

Я думаю, что это имеет смысл в некотором роде. Тогда в чем смысл использования Active Directory для аутентификации? – chobo

+0

Active Directory обрабатывает ваших пользователей, регистрирующихся в своих учетных записях на своих компьютерах. Когда они аутентифицируются, их учетные данные проверяются на учетные данные, хранящиеся в контроллерах домена. Интегрированная проверка подлинности Windows использует зарегистрированного пользователя на клиенте и доверие между веб-сервером и клиентом как средство определения того, кто обращается к сайту. – mason

+0

Интегрированный Auth хорошо работает для Chrome, Safari и IE, но для Firefox вам нужно будет изменить конфигурацию на каждом компьютере, чтобы он мог работать, и только если пользователи вступают в систему со своими учетными данными на этом компьютере. –

Смежные вопросы