I am trying to learn how to use ASP.NET Identity. My scenario is that I have to authenticate against Active Directory. For that purpose I am trying to use ActiveDirecotoryMembershipProvider
.
What I have to do is:
- Authenticate user/password against Active Directory
- Check whether user is present in my own database
The way I did it is I configured in my web.config
to use ActiveDirectoryMembershipProvider
as default membership provider. Then I override PasswordSignInAsync
method in my ApplicationSignInManager
class (which inherits SignInManager
) as follows:
public override Task<SignInStatus> PasswordSignInAsync(string userName, string password, bool isPersistent, bool shouldLockout)
{
var adok = Membership.Provider.ValidateUser(userName, password);
if (adok)
{
var user = UserManager.FindByName(userName);
if (user == null)
return Task.FromResult<SignInStatus>(SignInStatus.Failure);
else
{
base.SignInAsync(user, isPersistent, shouldLockout);
return Task.FromResult<SignInStatus>(SignInStatus.Success);
}
}
else
return Task.FromResult<SignInStatus>(SignInStatus.Failure);
}
This seems to work, but I think it's not the right way to do it. Can anyone suggest any better way of achieving this?