0

Я портировании приложения для лазурью и в этом приложении мы используем 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, как показано выше).

+0

Возможно, вам понадобится использовать API-интерфейс WAAD API http://msdn.microsoft.com/en-us/library/windowsazure/hh974476.aspx для вашей пользовательской проверки подлинности. – ramiramilu

ответ

4

No.

Вы не можете использовать PrincipalContext с Waad. Обязательно укажите здесь, что вы не можете в настоящее время (январь 2014 г.) выполнять прямую аутентификацию пользователя с помощью WAAD. Вам необходимо будет переписать некоторые части вашего приложения для совместимости:

  • Аутентификация происходит только на стороне WAAD, ваш код не может выполнять проверку пароля пользователя и пароля. Это также происходит на странице входа в WAAD. У вас ограниченный контроль над тем, как выглядит эта страница, и можете настроить ее через Premium features of WAAD.
  • Вы можете create users и reset user password используя WAAD Graph API.
  • Исследуйте API-интерфейс Graph для дополнительных операций, которые могут вам понадобиться (например, укажите членство в группе пользователей, прямые отчеты и т. Д.)
  • Вам придется переключиться с Windows Authentication на Federated Authentication. В зависимости от того, какую версию VS вы используете, это может быть легко или сложно. Для VS 2012 существует Identity and Access Tool extension. Хотя в 2013 году аутентификация может быть настроена только при создании проекта и впоследствии не может быть изменена. Но вы можете скопировать изменения конфигурации из другого проекта. Вам нужно внести изменения в файл web.config вместе с тем, что инициализировано в global.asax. Проверьте it here - хотя о VS 2013 RC, процесс такой же в RTM.
+0

Я нашел следующее, выполнив поиск федеративной аутентификации с помощью azure AD: http://msdn.microsoft.com/en-us/library/windowsazure/jj136813.aspx - Я прав, это путь, по которому я могу идти? – ChrFin

+0

нет, это абсолютно не связано с вашим проектом. Речь идет об аутентификации на шине служебной шины Windows Azure с использованием ADFS. Ваш единственный вариант - это так, как я описал. – astaykov

+0

Хм, хорошо - я, хотя это была «федеративная аутентификация», которую вы упомянули ... У вас есть пример для этого? – ChrFin

 Смежные вопросы

  • Нет связанных вопросов^_^