2013-07-16 44 views
19

我们是否知道如何实现基于owin.org的VS 2013中引入的新认证系统的LDAP支持。LDAP支持VS2013中新的认证系统(基于owin(owin.org))

我已经使用Forms身份验证编写了自己的提供程序,但它不再工作。

任何方式来扩展此也将非常受欢迎。我看到的所有内容都是为支持Google,Twitter和Facebook等许多oauth提供商而构建的。

+0

你看看这个: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

回答

1

这其实很简单。你只需要覆盖CheckPasswordAsync method in the provided UserManager。 (完全披露,这是我的博客文章)。

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) 
     }); 
    } 
} 

这是一个非常令人反感的方法,但它应该工作。

+0

使用'Task.Run'会伤害ASP.NET的性能。改用'Task.FromResult'返回一个完成的'Task'。 –

+0

@PauloMorgado你有一个链接到关于Tak.Run vs Task.FromResult的更多信息? –

+0

我有几个关于我的[curation](http://curah.microsoft.com/45553/asyncawait-general)。您可以在[PFX团队的博客](http://blogs.msdn.com/b/pfxteam/)和[Stephen Clearly的博客](http://blog.stephencleary.com/)上找到更多内容。为什么你认为在ASP.NET应用程序上调用Task.Run是否有用? –