Я портировании приложения для лазурью и в этом приложении мы используем Active Directory для проверки подлинности пользователей, как следующее:Использовать синхронизированный Active Directory в Azure для проверки пользователей, включая группы?
var user = model.UserName.Split('\\');
using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, user[0]))
{
if (pc.ValidateCredentials(user[1], model.Password, ContextOptions.Negotiate))
{
using (var adUser = UserPrincipal.FindByIdentity(pc, IdentityType.SamAccountName, user[1]))
{
if (!MembershipService.ValidateUser(model.UserName, model.Password))
{
using (var userDb = new UsersDbContext())
{
if (userDb.aspnet_Users.Count(u => u.UserName.ToLower().Contains(model.UserName)) <= 0)
MembershipService.CreateUser(model.UserName, model.Password, adUser.EmailAddress);
else
{
var msUser = Membership.GetUser(model.UserName);
msUser.ChangePassword(msUser.ResetPassword(), model.Password);
}
}
}
FormsService.SignIn(model.UserName, model.RememberMe);
foreach (var role in Roles.GetAllRoles())
{
using (var group = GroupPrincipal.FindByIdentity(pc, role))
{
if (group != null)
{
if (adUser.IsMemberOf(group))
{
if (!Roles.IsUserInRole(model.UserName, role))
Roles.AddUserToRole(model.UserName, role);
}
else
{
if (Roles.IsUserInRole(model.UserName, role))
Roles.RemoveUserFromRole(model.UserName, role);
}
}
}
}
}
}
}
Это прекрасно работает на нашем веб-сервере, который подключен к нашему серверу домена.
Теперь я настроил Active Directory Windows Azure и настроил его на синхронизацию с нашим On-Premise AD, который также работает.
Но я сейчас борюсь за поиск способа подключения своего PrincipalContext
к WAAD.
Возможно ли это и как? Если нет, то в чем альтернатива?
Я только нашел примеры, используя Single-Sign-On, который перенаправляет эту страницу на страницу входа MS, которую мы НЕ хотим использовать, потому что мы имеем смешанную аутентификацию, и в зависимости от введенного имени пользователя она либо использует ASP. NET или вытаскивает пользователя и группы из AD (и фактически создает пользователя членства ASP.NET, как показано выше).
Возможно, вам понадобится использовать API-интерфейс WAAD API http://msdn.microsoft.com/en-us/library/windowsazure/hh974476.aspx для вашей пользовательской проверки подлинности. – ramiramilu