2013-03-22 3 views
0

Я должен реализовать интерфейс, как это:активный каталог asp.net формы аутентификации в ASP.NET MVC 3

interface IMembershipWrapper 
{ 
    Guid GetUserId(); 
    Guid GetUserId(string username, bool userIsOnline); 
    bool ValidateUser(string userName, string password); 
    … 
} 

против активного каталога и ввести его с помощью Unity.

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

Я понимаю, что я могу настроить 'Active Directory asp.net формы проверки подлинности' через web.config, как описано here. К сожалению, это не вариант.

+0

Камеру вы используете проверку подлинности Windows? – LiverpoolsNumber9

ответ

3

Это должно быть полностью возможным без изменения вашей системы аутентификации в web.config. Особенно, если вы используете .NET 3.5+. Взгляните на System.DirectoryServices.AccountManagement.

Для реализации GetUserId(string username, bool userIsOnline) вы можете попробовать что-то вроде:

public Guid GetUserId(string username, bool userIsOnline) { 
    using(PrincipalContext pc = new PrincipalContext(ContextType.Domain, "[active directory domain here]")) { 
     var user = UserPrincipal.FindByIdentity(pc, IdentityType.SamAccountName, username); 
     if(user != null) 
      return user.Guid.Value; 
     else 
      return null; 
    } 
} 

Для реализации ValidateUser(string userName, string password) использования ValidateCredentials() на PrinicalContext

public bool ValidateUser(string userName, string password) { 
    using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, "[active directory domain here]")) 
    { 
     return pc.ValidateCredentials(userName, password); 
    } 
} 

Без дополнительной информации о реализации, я не знаю, как идти по поводу реализации GetUserId(), так как кажется, что у вас не будет достаточно информации, чтобы перейти в Active Directory.

+0

Отличный ответ. +1 – LiverpoolsNumber9

+0

выглядит великолепно. Благодарю. скоро заглянем в него. – cs0815

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