2016-05-29 15:46:42 +01:00
|
|
|
|
using System.Configuration;
|
|
|
|
|
|
using System.DirectoryServices.AccountManagement;
|
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
using Umbraco.Core.Models.Identity;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Umbraco.Core.Security
|
|
|
|
|
|
{
|
|
|
|
|
|
public class ActiveDirectoryBackOfficeUserPasswordChecker : IBackOfficeUserPasswordChecker
|
|
|
|
|
|
{
|
2016-05-30 11:15:03 +01:00
|
|
|
|
public virtual string ActiveDirectoryDomain {
|
|
|
|
|
|
get {
|
|
|
|
|
|
return ConfigurationManager.AppSettings["ActiveDirectoryDomain"];
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2016-05-29 15:46:42 +01:00
|
|
|
|
public Task<BackOfficeUserPasswordCheckerResult> CheckPasswordAsync(BackOfficeIdentityUser user, string password)
|
|
|
|
|
|
{
|
|
|
|
|
|
bool isValid;
|
2016-05-30 11:15:03 +01:00
|
|
|
|
using (var pc = new PrincipalContext(ContextType.Domain, ActiveDirectoryDomain))
|
2016-05-29 15:46:42 +01:00
|
|
|
|
{
|
|
|
|
|
|
isValid = pc.ValidateCredentials(user.UserName, password);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
var result = isValid
|
|
|
|
|
|
? BackOfficeUserPasswordCheckerResult.ValidCredentials
|
|
|
|
|
|
: BackOfficeUserPasswordCheckerResult.InvalidCredentials;
|
|
|
|
|
|
|
|
|
|
|
|
return Task.FromResult(result);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|