2013-07-16 15 views
19

Czy wiemy, jak wdrożyć obsługę LDAP dla nowego systemu uwierzytelniania wprowadzonego w VS 2013 opartego na owin.org.Obsługa LDAP dla nowego systemu uwierzytelniania w VS2013 (na podstawie owin (owin.org))

Napisałem własnego dostawcę przy użyciu uwierzytelniania formularzy, ale już nie działa.

Wszelkie sposoby na przedłużenie tego będą również mile widziane. Wszystko, co widzę, jest wbudowane w obsługę wielu dostawców Oauth, takich jak Google, Twitter i Facebook.

+0

Czy to sprawdziłeś: http://blogs.msdn.com/b/webdev/archive/2014/02/21/using-claims-in-your-web-app-is-easier-with-the -new-owin-security-components.aspx – Saravanan

Odpowiedz

1

To naprawdę całkiem proste. Musisz po prostu zastąpić CheckPasswordAsync method in the provided UserManager. (Pełne ujawnienie, to mój blog).

public class ApplicationUserManager : UserManager<ApplicationUser> { 
//...SNIP... 
    public override async Task<bool> CheckPasswordAsync(ApplicationUser user, string password) 
    { 
     return await Task.Run(() => { 
      _context = new PrincipalContext(ContextType.Domain); 
      return _context.ValidateCredentials(user.UserName, password, ContextOptions.Negotiate) 
     }); 
    } 
} 

To bardzo naiwna metoda, ale powinna działać.

+0

Użycie 'Task.Run' zaszkodzi wydajności na ASP.NET. Użyj 'Task.FromResult', aby zamiast tego zwrócić wypełnione' zadanie'. –

+0

@PauloMorgado Czy masz link do więcej informacji na temat wydajności Tak.Run vs Task.FromResult? –

+0

Mam kilka na mojej [kuracji] (http://curah.microsoft.com/45553/asyncawait-general). Możesz znaleźć o wiele więcej na blogu [Drużyny PFX] (http://blogs.msdn.com/b/pfxteam/) i [blogu Stephena Clearly] (http://blog.stephencleary.com/). Jak myślisz, dlaczego wywoływanie 'Task.Run' na aplikacji ASP.NET jest dobre? –